您的位置:首页 > 其它

基本排序之希尔排序

2013-06-08 11:50 190 查看
关于希尔排序,这是一种不稳定,而且属于插入排序。为什么?

希尔排序=分成若干个组子序列,分别插入排序。

怎么分组?

有一个增量h,没增加h,则把它们放在一起。插入排序,直到h减少到1,此时正是简单插入排序。

看代码

#include<iostream>
using namespace std;
template <class T>
void shel(T p[],int n){
int k,j,i;
T t;
k=n/2;
while(k>0){
for(j=k;j<=n-1;j++){
t=p[j];i=j-k;
while((i>=0)&&(p[i]>t)){
p[i+k]=p[i];i=i-k;
}
p[i+k]=t;
}
k=k/2;
}
return;
}
同样的当调用函数时,只需改为shel(p+10,40);即可。

这是两种非常常见的插入法的排序应用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐