美文网首页
希尔排序

希尔排序

作者: a丶逍遥子 | 来源:发表于2019-01-17 18:00 被阅读0次

    Java代码实现

    public static void shellSort(int[] arr) {
            int len = arr.length;
            //增量, 选择合适的增量有助于性能提升
            int inc = 2;
            // 步长
            int step = len / inc;
            for (; step > 0; step /= inc) {
                //从第r个元素,逐个对其所在组进行直接插入排序操作
                for (int r = step; r < len; r ++) {
                    // 左边要比较的值
                    int l = r - step;
                    int insertValue = arr[r];
                    for (; l >= 0 && insertValue < arr[l]; l -= step) {
                        arr[l + step] = arr[l];
                    }
                    arr[l + step] = insertValue;
                }
            }
        }
    

    GoLang 代码实现

    func shellSort(arr []int) {
        len := len(arr)
        // 增量
        inc := 2
        // 步长
        step := len / inc
        for ; step > 0; step /= inc {
            for r := step; r < len; r ++ {
                // 最小下标为0
                l := r - step
                tmp := arr[r]
                for ; l >= 0 && tmp < arr[l]; l -= step {
                    arr[l+step] = arr[l]
                }
                arr[l+step] = tmp
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:希尔排序

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