《七大排序算法》(四)之希尔排序(Java实现)
来源:互联网 发布:逆战一直检测数据异常 编辑:程序博客网 时间:2024/06/06 04:25
希尔排序(Shell Sort)是D.LShell于1959年提出来的一种排序算法。在这之前排序算法的时间复杂度基本都是O(n^2)的,希尔排序算法是突破这个时间复杂度的第一批算法之一。
基本算法思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
图解希尔排序:
算法代码:
package shellsort;public class Shell {static void shell(int arr[]){int i,j,temp;int increment= arr.length;do{increment = increment/3 + 1;//步长每次设置为length/3 + 1; for(i = increment;i<arr.length;i++){if(arr[i] < arr[i-increment]){//直接插入排序temp = arr[i];for(j = i - increment;j>=0&&temp<arr[j];j-=increment)arr[j+increment] = arr[j];arr[j+increment] = temp;}}for(int a : arr){System.out.print(a+" ");}System.out.println("");}while(increment > 1);}public static void main(String[] args) {int arr[] = {9,1,5,8,3,7,4,6,2};shell(arr);}}
阅读全文
0 0
- 《七大排序算法》(四)之希尔排序(Java实现)
- 排序算法(四):JAVA实现希尔排序
- java算法之四希尔排序(插入排序)
- 排序算法之希尔排序(java实现)
- 七大排序算法系列之希尔排序
- 七大排序算法(冒泡,选择,插入,二分法排序,希尔,快速,合并,堆排序)的java实现
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- 算法学习之排序算法(四)(希尔排序)
- java排序之shell排序(希尔排序)(四)
- 排序算法之希尔排序 java实现
- 《七大排序算法》(Java实现)
- 排序算法之 —— 希尔排序(四)
- 《七大排序算法》(三)之直接插入排序排序(Java实现)
- Java排序算法总结(四):希尔排序
- Java排序算法总结(四):希尔排序
- 算法实现之希尔排序(C++)
- 排序算法总结(四)希尔排序
- 排序算法(四)希尔排序
- 集合笔记
- kali国内更新源+中文输入法安装+SSH
- 线程
- Asch PK Lisk系列之一:安全性
- STM32 卡在启动文件 B .处
- 《七大排序算法》(四)之希尔排序(Java实现)
- 使用GNU gettext来实现网站多语言支持
- 常见全局唯一Id生成策略分析
- Lock同步锁完美搞定生产者与消费者死锁问题
- ubuntu安装Openblas
- 一次监控网络,linux杀毒经历
- 常用git命令
- ACM TOJ1292 排序
- 最优二叉树概念 (哈夫曼树)