希尔排序

基于插入排序的希尔排序

public class ShellSort {


    private static void shellSort(int[] a) {
        int N = a.length;
        int h = 1;
     
        while (h < N / 3) {
            h = h * 3 + 1;
        }
        while (h >= 1) {
            for (int i = h; i < N; i++) {
                for (int j = i; j >= h && (a[j] < a[j - h]); j -= h) {
                    int temp = a[j];
                    a[j] = a[j - h];
                    a[j - h] = temp;
                }
            }
            h = h / 3;
        }

    }

    public static void main(String[] args){
        int[] a = {10,97,863,844,202,3,49,6,39,4,72,3};
        shellSort(a);
        for(int i:a){
            System.out.print(i+", ");
        }
    }

}

2016-10-09_201224.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文 | 莫若吻 (注:如果想更好的理解希尔排序,请先看看我的上一篇博客插入排序,希望会对你有帮助。) 一、简介 希...
    Promise_Sun阅读 66,130评论 18 62
  • 插入排序 直接插入排序的基本思想:每次将一个待排序的记录,按其keyword的大小插入到前面已经排好的子序列中的适...
    Sunrain16阅读 4,874评论 0 3
  • 希尔排序 希尔排序的由来是根据插入排序的。读者若不了解插入排序,可以参考笔者的详解排序算法--插入排序和冒泡排序....
    六尺帐篷阅读 5,028评论 0 11
  • 一、简介 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。 希尔排序是基于插入排序的以下两点性质...
    野狗子嗷嗷嗷阅读 4,440评论 0 0
  • 每个月都有很多新人加入美乐家 但为什么最后能够启动的 并不是所有人 最后能够拿到结果的也是少数 原因是大部分伙伴没...
    微笑建辉阅读 3,008评论 0 0