java排序-插入排序-直接排序

  /**
     * 直接插入
     * 时间复杂度O(n^2)
     * 空间复杂度O(1)
     */
    @Test
    public void zjcrTest(){
        //原数组,直接排序原数组
        int[] data = new int[]{4,105,91,2,38,6,7,3,11,9};
        //初始化
        int temp;
        //在原数组中一个一个的排序
        /**
         * 1、取出第二个元素,与前面所有的元素,也就是第一个进行比较,找出合适的位置插入进去
         * 2、取出第三个元素,与前面所有的元素反着进行比较,因为前面的已经排好,所以没有找到相应的位置就会把元素向后移动,直到找到这个位置,留出空,插入进去
         * 3、遍历整个数组,把所有的全部进行排序,得到结果
         */
        for (int i = 1; i < data.length; i++) {
            //创建一个即将插入数组的数
            temp=data[i];
            int j;
            //元素向后移动,寻找temp能够插入的位置
            //data[j]>temp表示当找到这个位置的时候结束循环,也就是结束data中的元素的后移,为temp留出位置
            for (j = i-1;j>=0 && data[j]>temp ;j--){
                data[j+1]=data[j];
            }
            //插入temp
            data[j+1]=temp;
        }
        //输出数组
        System.out.println(Arrays.toString(data));
}

 

posted @ 2019-01-10 16:57  浪川宣哲  阅读(117)  评论(0)    收藏  举报