簡單排序——希爾排序

基本思想:
數組通過數組下標按一定增量進行分組,然後將被分組的元素進行排序(並不是只有兩個元素進行比較,而是多個),一次排序完成後再取比第一次小的增量進行排序,直到增量爲1。
圖解(這是引用百度百科的圖,增量依次爲5,3,1)
這裏寫圖片描述

代碼實現:

public static void shellSort(int arr[]){
        //這裏將初始增量爲數組長度一半(並不代表一定要這樣取值,也可以是3、4、5等),
        //每循環一次增量大小減半
        for(int increment = arr.length/2; increment>0; increment/=2){
            //對分組結果進行直接插入排序
            for(int i=increment; i<arr.length; i++){
                int temp =arr[i];
                int j = 0;
                for(j=i-increment; j>=0; j=j-increment){
                    if(temp<arr[j]){
                        arr[j+increment] = arr[j];
                    }else{
                        break;
                    }
                }
                arr[j+increment] = temp;
            }
            for(int k=0; k<arr.length; k++){
                System.out.print(" "+arr[k]+" ");
            }
            System.out.println();
        }
    }
發佈了38 篇原創文章 · 獲贊 2 · 訪問量 9705
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章