数据算法之希尔排序(shellSort)的Java实现
2017-01-17 15:45
447 查看
本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。
希尔排序的基本思想是先把数组分成若干个小数组,然后对小数组进行排序,最后再整体排序。
如图所示
Java具体实现代码:
输入:数据元素数组r,数组r 的待排序区间[low..high],步长序列delta
输出:数组r 以关键字有序
代码:
希尔排序的基本思想是先把数组分成若干个小数组,然后对小数组进行排序,最后再整体排序。
如图所示
Java具体实现代码:
输入:数据元素数组r,数组r 的待排序区间[low..high],步长序列delta
输出:数组r 以关键字有序
代码:
public void shellSort(Object[] r, int low, int high, int[] delta){ for (int k=0;k<delta.length;k++) shellInsert(r, low, high, delta[k]); //一趟步长为delta[k]的直接插入排序 } private void shellInsert(Object[] r, int low, int high, int deltaK){ for (int i=low+deltaK; i<=high; i++) if (strategy.compare(r[i],r[i-deltaK])<0){ //小于时,需将r[i] 插入有序表 Object temp = r[i]; int j = i-deltaK; for(; j>=low&&strategy.compare(temp,r[j])<0; j=j-deltaK) r[j+deltaK] = r[j]; //记录后移 r[j+deltaK] = temp; //插入到正确位置 } }
相关文章推荐
- 使用Unix Shells进行大括号扩展
- 通过PowerShell开源社区的Win32-OpenSSH来管理你的Windows服务器
- Ubuntu如何新增管理员账户?
- 解析企业Shell面试题
- Shell 发邮件
- shell中>/dev/null 2>&1是什么鬼?
- shell 常用命令
- git更新脚本
- SHELL 脚本批量添加删除用户
- shell脚本输出带颜色字体
- 用Scrapy shell调试xpath
- Linux Shell 判断块设备节点是否存在
- 世纪互联提供的关于Powershell中将虚拟机加入备份保管库的方法
- shell 判断postgresql中用户是否存在?
- python 调用shell命令的方法
- shell 获取 postgresql返回字段值
- shell grep
- 暴力破解脚本 shell
- shell调度控制面命令
- 纯C++编写Win32/X64通用Shellcode注入csrss进程