您的位置:首页 > 理论基础 > 数据结构算法

【数据结构与算法设计】希尔排序

2016-04-14 15:14 232 查看

希尔排序( 最坏O(N^2) )

重要概念:增量序列 增量
增量hk习惯于取len/2,然后递减hk=hk/2,直到等于1。
对于hk排序:下标为hk,hk+1,...,len-1 元素i,i放到i,i-hk, i-2hk...正确的位置上。
个人理解:也就是间隔hk排序,最后会进行间隔1排序,也就是全局排序。
//默认是升序
public void sort(int[]nums){
int len = nums.length;
//取hk=len/2
for(int hk = len/2;hk>0;hk/=2){
for(int i=hk;i<len;i++){
//从i开始,以hk的间隔往前遍历,找到nums[i]合适的位置插入
int cur = nums[i];
int j=i;
for(j=i;j>=hk;j-=hk){
if(cur<nums[j-hk])
nums[j]=nums[j-hk];
else
break;
}
nums[j]=cur;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: