标签:分析 增量排序 pre 复杂度 不同 需要 必须 复杂 代码
void ShellSort(int R[],int n)
{
int i,j,delta;
for(delta=n/2;delta>0;delta/=2) //此处增量序列取希尔增量序列(n/2,n/4....)
{
for(i=0;i<delta;i++) //根据增量序列对原序列进行分组
{
for(j=i+delta;j<n;j+=delta) //对每组内部进行直接插入排序
{
if(R[j]<R[j-delta]) //较大元素后移
{
int temp=R[j];
int k=j-delta;
while(k>=0&&R[k]>temp)
{
R[k+delta]=R[k];
k-=delta;
}
R[k+delta]=temp; //插入元素
}
}
}
}
标签:分析 增量排序 pre 复杂度 不同 需要 必须 复杂 代码
原文地址:https://www.cnblogs.com/sunnylux/p/11039887.html