[算法]希尔算法

希尔算法是插入排序与冒泡的一种延伸,将以步长为2将数组拆分grap= length/2
查分成一小块进行排序
然后继续grap/2
继续上述排序使数组大致上有序
直到grap=1时完成排序,减少排序次数,降低复杂度

 for (int gap = array.length / 2; gap > 0; gap /= 2) {
            //从第gap个元素,逐个对其所在组进行直接插入排序操作
            for (int i = gap; i < array.length; i++) {
                int j = i;
                int temp;
                while (j - gap >= 0 && array[j] < array[j - gap]) {
                    temp = array[j];
                    array[j] = array[j - gap];
                    array[j - gap] = temp;
                    j -= gap;
                }
            }
        }

你可能感兴趣的:(算法,算法与数据结构)