数据结构之插入排序

插入排序:  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);
    }

}

posted @ 2015-12-18 11:25  wangb021  阅读(150)  评论(0编辑  收藏  举报