排序算法总结(5)——希尔排序
来源:互联网 发布:linux查看javahome 编辑:程序博客网 时间:2024/06/01 12:40
希尔排序在插入排序的基础上进行了改进,由于插入排序需要移动即复制数组中的很多元素,降低了执行效率。
希尔排序不必一个一个地移动中间的数据项,通过n-增量排序的方式,改进了执行效率。通过加大插入排序中元素之间的间隔,在这些有间隔的元素中进行插入排序,从而使数据项能大跨度地移动。当这些数据项排过一趟后,再减小数据项的间隔。数据项之间的间隔称为增量,用h表示。
间隔的递归表达式为h=3*h+1.
代码如下:
public class ShellSort {public long[] theArray;public int nElmets;public ShellSort(int max){theArray=new long[max];}public void shSort(){int in,out;long temp;int h=1;while(h<=nElmets/3){h=3*h+1;}while(h>0){for(out=h;out<nElmets;out++){temp=theArray[out];in=out;while((in>h-1)&&(theArray[in-h]>=temp)){theArray[in]=theArray[in-h];in-=h;}theArray[in]=temp;}h=(h-1)/3;}}}
效率:
希尔排序的效率还没人能够从理论上分析,估计它的时间从O(N3/2)到O(N7/6)
0 0
- 排序算法总结(5)——希尔排序
- 排序算法总结(四)希尔排序
- 内排序算法总结——希尔排序
- 排序算法总结---希尔排序
- 排序算法总结---希尔排序
- Java排序算法总结之(一)——插入排序(直接插入排序、折半插入排序、希尔排序)
- 排序算法Java——插入排序(希尔排序)
- 算法——希尔排序
- 算法 —— 希尔排序
- 算法——希尔排序
- java算法—希尔排序
- 排序算法总结(一)——冒泡、插入、希尔与选择排序
- 算法排序———希尔排序
- 排序算法——希尔排序
- 经典算法排序——希尔排序
- 排序算法4——希尔排序
- 排序算法——希尔排序
- 排序算法——希尔排序
- Blender 工具使用—–准星
- 踩坑[INSTALL_FAILED_PERMISSION_LEVEL_DOWNGRADE]
- Hadoop 词频权重公式
- python的debug调试工具pdb学习
- Android studio 2.0 的安装的全程截图,手把手教学,亲自实践。
- 排序算法总结(5)——希尔排序
- boost::noncopyable 分析
- XssAPP开源,Xss跨站脚本攻击测试平台(JAVA开发) BY:WebSOS
- Failed to download samples index, please check your connection and try again
- Setting up Systemd on Debian in 10 minutes
- Permute the array according to the given permutation.
- *leetcode #115 in cpp
- Java web项目代码结构
- leetcode #116 in cpp