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;
        }
        //输出数组
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i]+",");
        }
    }

猜你喜欢

转载自www.cnblogs.com/lcxz/p/10251038.html
今日推荐