美文网首页
希尔排序

希尔排序

作者: 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
        }
    }
}

相关文章

  • 排序算法(二)之希尔排序

    图解排序算法(二)之希尔排序 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也...

  • 07-希尔排序(Shell Sort)

    希尔排序(Shell Sort) 希尔排序是唐纳德·希尔(Donald Shell)在0959年提出的。希尔排序与...

  • 排序-希尔排序(分治)

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • swift经典算法-希尔排序

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • 排序算法④——希尔排序

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • 排序算法-希尔排序(Java实现)

    希尔排序 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是...

  • 说说算法那些事-希尔排序

    希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,希尔排序法又称...

  • 希尔排序学习

    希尔排序希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基...

  • 排序算法(四) 希尔排序(插入排序的进化)

    参考Java排序算法(四):希尔排序常见排序算法 - 希尔排序 (Shell Sort) 希尔排序算法是按其设计者...

  • 编程马拉松 Day04 希尔排序、归并排序、快速排序

    本文将介绍三个高级排序算法 希尔排序 归并排序 快速排序 希尔排序 希尔排序(Shell's Sort)的名称源于...

网友评论

      本文标题:希尔排序

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