数据结构之插入排序
插入排序: 1比较2移位3插入
1、首先,插入第i个元素,设置哨兵元素 X=H[i,]那么要比较 i与 j(j<i , j--)的各位上的元素。
2、如果发现一个 H[i] <H[j] ,就把j的元素外后移动一位。 当H[i] >=H[j]时,就把 H[j+1] =X
3、前i-1个元素都是有序的。
public class InertSort {
public static void InsertSort(int[] H) {
for (int i = 1; i <= H.length-1 ; i++) {
int x = H[i];
int j = i - 1;
for (; j >= 0; j--) { //在这里debug一下,可得j是可以传到循环外的,由于前面有 j = i- 1;这里就不能重新int j
if (x < H[j]) {
H[j + 1] = H[j];
}
else break;
}
H[j+1] = x; //易错点,这里是比较的是H[j]与x,插入到的应是 j+1
}
for (int k : H) {
System.out.print(k + " ");
}
System.out.println(" ");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] H = { 4, 2, 6, 3, 7, 21, 33, 14, 28, 24, 31,33,2 };
InsertSort(H);
}
}