排序算法之希尔排序

假装没事ソ 提交于 2019-11-27 21:50:44

基本思想:
在要排序的一组数中,根据某一增量分为若干子序列,并对子序列分别进行插入排序。
然后逐渐将增量减小,并重复上述过程。直至增量为1,此时数据序列基本有序,最后进行插入排序。

过程:

java代码:

    public int[] shellSort(int[] array) {
        int incre = array.length;
        while (true) {
            incre = incre / 2;
            for (int k = 0; k < incre; k++) {    //根据增量分为若干子序列

                for (int i = k + incre; i < array.length; i += incre) {

                    for (int j = i; j > k; j -= incre) {
                        
                        if (array[j] < array[j - incre]) {
                            array[j - incre] = array[j] ^ array[j - incre];
                            array[j] = array[j] ^ array[j - incre];
                            array[j - incre] = array[j] ^ array[j - incre];
                        } else {
                            break;
                        }
                    }
                }
            }

            if (incre == 1) {
                return array;
            }
        }
    }

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!