//希尔排序
/*算法思想
1.先定步数n,即向隔n位的两个数为一组
2.对每组数进行直接插入排序
3.令n2=n1/2,划分组,进行2。若n1等于1,进行4
4.排序结束
*/
void shellSort(ElemType a[],int n)
{
int k,i,j;
for(k = n/2;k >= 1; k = k/2) //这里令步数为n/2
{
for(i = k+1 ; i <= n ; i++)
{
if(a[i].key<a[i-k].key)
{
a[0]=a[i];
for(j = i-k ; j >= 1 && a[j].key < a[0].key;j-=k)
{
if(a[j].key>a[0].key)
{
a[j+k]=a[j];
}
}
a[j+k] = a[0];
}
}
}
}
(计算机考研数据结构)希尔排序
最新推荐文章于 2024-06-17 22:04:00 发布