排序算法(二)希尔排序
来源:互联网 发布:another mysql daemon 编辑:程序博客网 时间:2024/06/05 11:01
希尔排序(Shell Sort)
介绍 :
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。
希尔插入排序代码实现(java)
public static int[] shellSort(int[] a) { if (a == null || a.length < 2) { return a; } // 希尔排序 int d = a.length; while (true) { d = d / 2; for (int x = 0; x < d; x++) { for (int i = x + d; i < a.length; i = i + d) { int temp = a[i]; int j; for (j = i - d; j >= 0 && a[j] > temp; j = j - d) { a[j + d] = a[j]; } a[j + d] = temp; } } if (d == 1) { break; } } return a; }
希尔排序过程动画:
“`
性能分析:
时间复杂度:
希尔排序的时间复杂度与增量序列的选取有关,例如希尔增量时间复杂度为O(n²),而Hibbard增量的希尔排序的时间复杂度为O( ),希尔排序时间复杂度的下界是n*log2n。
空间复杂度:
O(1)
稳定性:
不稳定
总结:
希尔排序没有快速排序算法快 O(n(logn)),因此中等大小规模表现良好,对规模非常大的数据排序不是最优选择。但是比O( )复杂度的算法快得多。并且希尔排序非常容易实现,算法代码短而简单。 此外,希尔算法在最坏的情况下和平均情况下执行效率相差不是很多,与此同时快速排序在最坏的情况下执行的效率会非常差。
阅读全文
0 0
- 排序算法(二):希尔排序
- 八大排序算法(二)希尔排序
- 排序算法(二):希尔排序
- 排序算法 -- (二)希尔排序
- 排序算法(二)---- 希尔排序
- 排序算法(二)希尔排序
- 排序算法(二)希尔排序
- 排序算法二(归并排序、快速排序、希尔排序)
- 排序算法(二):希尔排序(最小增量排序)
- 常见排序算法整理(二)----希尔排序,选择排序
- 八大排序算法之(二)插入排序 希尔排序
- 【十六】排序算法(二)--希尔排序算法
- 排序(二):希尔排序
- 排序(二)----希尔排序
- 排序:希尔排序(算法)
- C语言--------排序算法---------希尔排序(二)
- 八大排序算法之二希尔排序(C语言)
- 排序算法(二)——希尔排序
- Struts2运行流程
- java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive
- 公司生产管理系统如何精细管控生产全过程
- day22
- ubuntu下wifi灰色的解决办法
- 排序算法(二)希尔排序
- [NOIP模拟] 拆网线 树形DP
- 【DSP】TMS320F28335 扩展SRAM
- Android studio操作
- 对VUE项目实现的理解
- day23
- <Python> 递归展开嵌套列表等可迭代对象(list,dict,set...)
- sql命令笔记
- 利用Maxwell组件实时监听Mysql的binlog日志,并且把解析的json格式数据发送到kafka窗口供实时消费