定义
插入排序就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为 O(n^2) ,是稳定的排序方法。
插入排序的基本思想:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
例题
随意定义十个数字的数组 int[] numbers = {12,45,5,6,78,101,91,54,65,10}。
分析:
第一趟: [12] {45,5,6,78,101,91,54,65,10}
第二趟: [12,45] {5,6,78,101,91,54,65,10}
第三趟: [5,12,45] {6,78,101,91,54,65,10}
…..
第(N-2)趟: [ 5 6 10 12 45 54 65 78 91 101 ]
(其中每一个数需要对已经排序数据的最小值开始比较,直到比较到最大值,比较到合适位置就直接插入,直到全部插完)
/*
* 插入排序算法
* */
public class InsertionSort {
public static void main(String[] args) {
//随意定义十个数
int[] numbers = {12,45,5,6,78,101,91,54,65,10};
//比较n-2趟
for (int i = 0; i < numbers.length-1; i++) {
for (int j = 0; j <= i; j++) {
//把numbers[i+1]和每一个数比较,其中包括了交换
if(numbers[i+1] < numbers[j]){
int temp = numbers[i+1];
numbers[i+1] = numbers[j];
numbers[j] = temp;
}
}
}
//循环输出排序好的数据
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i]+"\t");
}
}
}
后续持续更新其它算法…