希爾排序(Go語言)

func ShellSort(num []int) {

    //increment相隔數量
    for increment:=len(num)/2;increment>0 ;increment/=2 {
        //i序號較大的數組下標,i ,j進行比較
        
        for i := increment; i < len(num); i++ {
            //進行交換
            temp:=num[i]
            //按照increment,數組從j到0進行交換比較
            for j:= i - increment; j >= 0; j -= increment {
                if temp < num[j] {
                    num[j+increment]=num[j]
                    num[j]=temp
                    temp=num[j]
                }else {//因爲數組前面按照increment已經排好序,若是temp>num[j],則沒必要繼續比較交換下去
                    break
                }
            }

        }

    }

}
相關文章
相關標籤/搜索