美文网首页
希尔排序

希尔排序

作者: 桑鱼nicoo | 来源:发表于2020-02-28 12:57 被阅读0次
原始数组:[ 13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10 ]

以步长为8 进行排序
13 14 94 33 82 25 59 94 
65 23 45 27 73 25 39 10

对每列进行排序
13 14 45 27 73 25 39 10 
65 23 94 33 82 25 59 94

合并上述4行数字,依序接在一起得到
[ 13 14 45 27 73 25 39 10 65 23 94 33 82 25 59 94 ]

以步长为4 进行排序
13 14 45 27
73 25 39 10
65 23 94 33
82 25 59 94

排序之后变为:
13 14 39 10
65 23 45 27
73 25 59 33
82 25 94 94

合并上述4行数字,依序接在一起得到
[ 13 14 39 10 65 23 45 27 73 25 59 33 82 25 94 94]

以步长为2 进行排序
13 14
39 10 
65 23
45 27
73 25 
59 33
82 25
94 94

排序之后变为:
13 10
39 14
45 23
59 25
65 25
73 27 
82 33 
94 94

合并上述4行数字,依序接在一起得到
[13 10 39 14 45 23 59 25 65 25 73 27 82 33 94 94]

最后以1步长进行排序(此时就是简单的插入排序了)
public class MyTest01 {
    public static int[] shellSort(int[] arr) {
        int length = arr.length;
        int temp;
        for (int step = length / 2; step >= 1; step /= 2){
            for(int i = step;i < length;i++){
                temp = arr[i];
                int j = i - step;
                while (j >= 0 && arr[j] > temp){
                    arr[j + step] = arr[j];
                    j -= step;
                }
                arr[j + step] = temp;
            }
        }
        return arr;
    }

    public static void main(String[] args) {
        int[] arr = {13,14,94,33,82,25,59,94,65,23,45,27,73,25,39,10};
        System.out.println(Arrays.toString(shellSort(arr)));
    }
}

相关文章

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

    图解排序算法(二)之希尔排序 希尔排序是希尔(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/yidffhtx.html