希爾排序

基本思想

希爾排序是把記錄按下表的一定增量分組,對(duì)每組使用直接插入排序算法排序;隨著增量逐漸減少,每組包含的關(guān)鍵詞越來(lái)越多,當(dāng)增量減至1時(shí),整個(gè)文件恰被分成一組,算法便終止。


實(shí)現(xiàn)步驟

  • 計(jì)算數(shù)組中間值,劃分間隔gap
  • 按照gap間隔,劃分為新的子序列
  • 分別使用插入排序,使每個(gè)子序列變得相對(duì)有序
  • 減少間隔gap,重復(fù)步驟2、3
劃分序列

實(shí)現(xiàn)代碼

public class Shell_Sort {

    public static void shell_sort(int[] array){
        if (array==null||array.length<=0){
            return;
        }
        int length = array.length;
        int gap=length/2;
        int temp = 0;
        while (gap>0){
            for (int i = gap; i <length; i++) {
                temp = array[i];
                int preIndex = i-gap;
                while (preIndex>=0&& array[preIndex]>temp){
                    array[preIndex+gap] = array[preIndex];
                    preIndex-=gap;
                }
                array[preIndex+gap]=temp;
            }
            gap /=2;
        }


    }
    public static void main(String[] args) {
        int[] array = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};

        shell_sort(array);
        System.out.println(Arrays.toString(array));
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容