美文网首页
希尔排序(C++)

希尔排序(C++)

作者: 陈_振 | 来源:发表于2019-05-17 20:26 被阅读0次
    template<typename T>
    void shellSort(T arr[], int n) {
        
        // 有很多论文研究各种不同的递增序列,但都无法证明某个递增序列是最好的
        // 该递增序列的计算和使用都比较简单,和复杂递增序列的性能接近
        // 相当于把插入排序的代码将移动元素的距离由1改为h即可
        int h = 1;
        while (h < n / 3) {
            h = h * 3 + 1;
        }
        
        while (h >= 1) {
            for (int i = h; i < n; i++) {
                T insertElement = arr[i];
                int j;
                for (j = i; j >= h && insertElement < arr[j - h]; j -= h) {
                    arr[j] = arr[j - h];
                }
                arr[j] = insertElement;
            }
            
            h = h / 3;
        }
        
    }
    

    相关文章

      网友评论

          本文标题:希尔排序(C++)

          本文链接:https://www.haomeiwen.com/subject/wnlaaqtx.html