希尔排序(Shell Sort)
Posted sunnylux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序(Shell Sort)相关的知识,希望对你有一定的参考价值。
希尔排序
思路分析:希尔排序又叫缩小增量排序,通过指定增量序列(尽量取素数且最小增量必须为1)对需要进行排序的数组进行分组,然后每组内部进行一次直接插入排序,不断缩小增量,直到增量为1排序完成。
时间复杂度:不同增量序列时间复杂度不同(希尔增量序列时间复杂度为O(n2)、帕斯增量序列时间复杂度为O(n1.5))。
代码:
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; //插入元素
以上是关于希尔排序(Shell Sort)的主要内容,如果未能解决你的问题,请参考以下文章