插入排序
插入排序故名思议就是把元素插入到已经排好序的位置。
原始数据就好像一副无序的54张扑克牌,我们从第二张牌开始插入,这样一张张的找到牌要插入的位置插入——引自算法导论第2章,2.1节。
代码实现
int[] a = {3,1,6,8,9,6,7,2,0,4,5};
public static int[] sort(int[] b){
for (int i = 1; i < b.length; i++) { //①
int key = b[i]; //②新要插入的值
int j = i -1; //③ 0 ... i -1
while (j >= 0 && b[j] >key){ //④
b[j+1] = b[j];//⑤
j = j-1;//⑥
}
b[j+1] = key; //⑦新的要插入的位置
}
return b;
}
- 1、遍历从第二个元素开始
- 2、b[i]为即将插入的值,想象成刚摸到手的牌
- 3、把 i-1赋给j ,j为前面已经排好序数据,想象成已经排好序的扑克牌