1、思想
将数组元素想象成玩扑克时拿牌顺序,首先当有一个元素,没啥处理;然后第二个元素,和第一个比较,找到适合的位置插入;然后第三个元素找到适合位置,原本在该位置以后的所有元素往后移一位,再插入。循环反复,形成有序序列。
2、时间复杂度
最好 O(n) ,最坏 O(n^2) ,平均O(n^2)。
3、代码实现
public class InsertSort {
public static void insertSort(int[] arr){
if(arr.length == 0 || arr == null) return ;
int n = arr.length;
for(int i=1;i<n;i++){
int temp = arr[i];
int move = i-1;
while(move >=0 && arr[move] >temp){
arr[move+1] = arr[move];
move--;
}
arr[move+1] = temp;
}
}
public static void main(String[] args){
int[] arr = {50,10,90,30,70,40,80,60,20};
insertSort(arr);
for (int array : arr) {
System.out.print(array+" ");
}
}
}
来源:oschina
链接:https://my.oschina.net/u/3991724/blog/3207458