排序算法——希尔排序
来源:互联网 发布:it设备维修流程图 编辑:程序博客网 时间:2024/06/07 10:46
排序算法——希尔排序
希尔排序又叫缩减增量排序,是冒泡和插入排序的增强版,变成了比较相隔一段距离元素来交换,也是第一批冲破二次时间屏障的算法之一。它的基本思想是将数据按步长分组,对每组记录采用直接插入排序的方法进行排序,步长根据算法的进行逐渐减小,直到最后步长为1,比较相邻元素的最后一趟排序后,完成排序。
//希尔排序 根据步长进行比较 public static <T extends Comparable<T>> T[] ShellSortUp(T[] t) { int j; for(int gap = t.length/2 ; gap > 0 ; gap /= 2){ for (int i = gap; i < t.length; i++) { T temp = t[i]; for(j = i ; j >= gap && temp.compareTo(t[j-gap]) < 0 ; j -= gap){ t[j] = t[j-gap]; } t[j] = temp; } } return t; }
测试:
public class Main { public static void main(String[] args) { Integer[] i={3,6,8,22,5,7,2}; i = ShellSort.ShellSortUp(i); System.out.println(Arrays.toString(i)); }}
结果:
[2, 3, 5, 6, 7, 8, 22]
总结:
1. 时间复杂度 下界是O(n*log2n) 上界O(n²)
2. 空间复杂度:O(1)
3. 是不稳定排序算法
4. 不适用链式结构
5. 适用于中等规模排序
阅读全文
0 0
- 算法——希尔排序
- 算法 —— 希尔排序
- 算法——希尔排序
- java算法—希尔排序
- 算法排序———希尔排序
- 排序算法——希尔排序
- 经典算法排序——希尔排序
- 排序算法4——希尔排序
- 排序算法——希尔排序
- 排序算法——希尔排序
- 排序算法——希尔排序
- 排序算法系列——希尔排序
- 排序算法——希尔排序
- 排序算法——希尔排序
- 常用排序算法——希尔排序
- 数据结构排序算法——希尔排序
- 排序算法4——希尔排序
- 排序算法——希尔排序
- 梳理Ubuntu命令(文件查找和比较)---strings
- java 将数据库中的数据转化为easyUI treegrid json格式
- node学习之路(二)Buffer对象
- 小希的迷宫 (并查集)
- 基于xilinx FPGA验证ASIC可能遇到的timing问题
- 排序算法——希尔排序
- BZOJ 3529 莫比乌斯反演 + 离线 + 树状数组动态维护前缀和
- Django1.11下后台中文的显示
- 跳表SkipList
- mysql 三个表索引优化案例
- 年度最佳50句丧格言,让你看完怀疑人生
- LeetCode 119. Pascal's Triangle II
- angular4、angular4.0从入门到实战 打造股票管理网站 1.子路由 2. 路由传参三种方式 3. 路由守卫
- 获得多个字段分组语句