java数组如何插入元素并快捷排序?

美女程序员鼓励师

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1、从数组的第二个元素进行操作,如果发现其前面的元素比他大,就将其前面的元素往后挪,直到cur指向的元素大于或者等于他前一个元素,此时cur指向的位置就是待插入元素应该插入的位置。

static int[] insertSort2(int[] array){

 

    int len = array.length;

 

    for (int begin = 1; begin < len; begin++){

 

        int cur = begin;

 

        int tmp = array[cur];

 

        while (cur > 0 && array[cur] < array[cur-1]){

 

            array[cur] = array[cur-1];

 

            cur--;

 

        }

 

        array[cur] = tmp;

 

    }

 

    return array;

 

}

2、通过二分查找减少了比较次数,即cmp函数的调用,还减少了swap函数的调用。更快的找到了当前元素应该插入的位置,然后再进行挪动,提高了效率。

static int[] insertSort3(int[] array){

 

        int len = array.length;

 

 

 

        for (int begin = 1; begin < len; begin++){

 

            int v = array[begin];

 

            int insertIndex = search(array,begin);

 

            // 将 [insertIndex, begin) 范围内的元素往右边挪动一个单位

 

            for (int i = begin; i > insertIndex; i--){

 

                array[i] = array[i-1];

 

            }

 

            array[insertIndex] = v;

 

        }

 

        return array;

 

    }

 

    static int search(int[] array, int index){

 

        int begin = 0;

 

        int end = index;

 

        while(begin < end){

 

            int mid = (begin+end) >> 1;

 

            if (array[index] < array[mid]){

 

                end = mid;

 

            }else{

 

                begin = mid+1;

 

            }

 

        }

 

        return begin;

 

}

需要注意的是:使用了二分搜索后,只是减少了比较次数,但插入排序的平均时间复杂度依然是O(n^2)。

以上就是java数组插入元素并快捷排序的方法,大家在对基本的数组操作有所了解后,可以就本篇的综合性使用展开练习。更多Java学习指路:java数组

以上是 java数组如何插入元素并快捷排序? 的全部内容, 来源链接: utcz.com/z/543169.html

回到顶部