希尔排序

1 基本原理

希尔排序是一种递减增量插入排序算法。普通的插入排序的是以1为间隔进行排序,希尔排序是在其上做的优化,比如取一间隔序列为1,4,9 ,首先以9为间隔排序,再次以4为间隔排序,最后以1为间隔排序,就是普通的插入排序。

2 实现

public static void ShellSort(int[] a){
        int n = a.length;
        int h = 1;
        while(h < n/3){
            h = 3*h + 1;
        }
        while(h >= 1){
            for(int i = h; i < n; i++){
                for(int j = i;  j >= h && SortUtil.less(a,j,j-h);j -= h){
                    SortUtil.swap(a,j,j-h);
                }
            }
            h /= 3;
        }
    }

3 算法分析

时间复杂度不好分析,空间复杂度是O(1),不稳定算法

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

推荐阅读更多精彩内容

  • 文 | 莫若吻 (注:如果想更好的理解希尔排序,请先看看我的上一篇博客插入排序,希望会对你有帮助。) 一、简介 希...
    Promise_Sun阅读 66,005评论 18 62
  • 一、简介 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。 希尔排序是基于插入排序的以下两点性质...
    野狗子嗷嗷嗷阅读 908评论 0 0
  • 希尔排序(Shell Sort):是插入排序算法的一种更高效的改进版本。在这之前冒泡、选择、插入排序的时间复杂度基...
    方圆一里阅读 3,057评论 2 19
  • 9月买书,于11月13日读完。 读此书时,年仅20。感情经历一片空白,虽被男主矢志不渝的爱情所折服,但感觉...
    鹏_87da阅读 456评论 0 0
  • *设定为城市之光之后 *邰伟找到了江亚给方木立的碑 *之前看到有写手太太发“写手精分七题”有点好奇所以就来试试……...
    木木方阅读 527评论 0 2