希尔排序详解
来源:互联网 发布:淘宝中博论文靠谱吗 编辑:程序博客网 时间:2024/06/14 17:13
参考文章:点击打开链接
1、基本思想:
希尔排序也成为“缩小增量排序”,其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序列“基本有序”后,最后在对所有元素进行一次直接插入排序。因此,我们要采用跳跃分割的策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的结果是基本有序而不是局部有序。希尔排序是对直接插入排序算法的优化和升级。
所谓的基本有序,就是小的关键字基本在前面,大的基本在后面,不大不小的基本在中间,例如{2,1,3,6,4,7,5,8,9,}就可以称为基本有序了。但像{1,5,9,3,7,8,2,4,6}这样,9在第三位,2在倒数第三位就谈不上基本有序。
2、复杂度分析:
希尔排序的关键并不是随便分组后各自排序,而是将相隔某个“增量”的记录组成一个子序列,实现跳跃式移动,使得排序的效率提高。需要注意的是,增量序列的最后一个增量值必须等于1才行。另外,由于记录是跳跃式的移动,希尔排序并不是一种稳定的排序算法。
希尔排序最好时间复杂度和平均时间复杂度都是,最坏时间复杂度为。
3、排序过程如下:
以数组{26, 53, 67, 48, 57, 13, 48, 32, 60, 50 }为例,步长序列为{5,2,1}
初始化关键字: [26, 53, 67, 48, 57, 13, 48, 32, 60, 50 ]
最后的排序结果:
13 26 32 48 48 50 53 57 60 67
阅读全文
0 0
- 排序详解:希尔排序
- 希尔排序详解
- 希尔排序详解
- 希尔排序详解
- 希尔排序详解
- 希尔排序详解
- 希尔排序详解
- 黑马程序员--详解希尔排序
- Shell Sort (排序详解之 希尔排序)
- 希尔排序算法(排序详解)
- 插入排序与希尔排序详解
- js排序算法详解-希尔排序
- Java 详解希尔(Shell)排序
- Java 详解希尔(Shell)排序
- 数据结构系列之希尔排序详解
- Java 详解希尔(Shell)排序
- 数据结构排序系列详解之二 希尔排序
- 减治算法: 插入排序和希尔排序(详解)
- 调用国内著名网站的第三方调用API接口地址
- 第一篇BLOG
- P1020 导弹拦截(弱数据)
- 无人机出新规定,实名注册真的越来越“束手无策”?
- 关于webview
- 希尔排序详解
- VS2013 + OpenCV2.4.9 配置过程
- C语言-二项式系数
- tf.tile() 用法介绍
- 场景加载器
- 向量几何在游戏编程中的使用1
- Android快速理解Activity、View及Window&WindowManager之间关系
- oracle11g database安装和出现的问题
- 多继承