插入排序

public class lianxi {
    public static void main(String[] args) {
        int[] arr = {5, 1, 9, 7, 2, 8, 4, 3, 6};
        intsertSort(arr);
        for (int i = 0; i < arr.length; i++) {            
            System.out.print(arr[i] + " ");
        }
    }
    /**
     * 插入排序
     * @param array
     */
    static void intsertSort(int[] array) {
        //向前插入元素的前提是前面元素必须是有序的
                //从下标为1的元素开始逐一向前插入
        for (int i = 1; i < array.length; i++) {
            //把当前i的位置定为向后顶元素的坑
            int j = i;
            //从坑中把需要向插入的元素取出保存
            int temp = array[j];
            //如果向前插入的元素的值小于坑前面的值,如果j==0表示1位置就是插入元素的位置,退出循环
            while (j > 0 && temp < array[j - 1]) {
                //向后顶前面的元素
                array[j] = array[j - 1];
                //向前移坑
                j--;
            }
            //如果循环结束,当前j的位置就是要插入元素的位置
            array[j] = temp;
        }                
    }
}

posted @ 2019-02-19 21:11  zhencool  阅读(139)  评论(0)    收藏  举报