#include<stdio.h>
#define N 11 //定义表长为11
void ShellInsert(int L[N],int dk)
{
int j;
for(int i=dk;i<N;i++)
{
if(L[i]<L[i-dk])
{
int x=L[i];
for(j=i-dk;j>=0&&(x<L[j]);j-=dk)
L[j+dk]=L[j];
L[j+dk]=x;
}//if
}//for
}//ShellInsert
void ShellSort(int L[N],int dk[],int i) //i为增量个数
{
int k;
for(k=0;k<i;k++)
ShellInsert(L,dk[k]);
}
main()
{
int a[N]={49,38,65,97,76,3,27,49,55,4,11};
int b[80];
int dk=N/2,i=0;
while(dk>=1)
{
b[i]=dk;
dk/=2;
i++;
}
ShellSort(a,b,i);
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
3 4 11 27 38 49 49 55 65 76 97 Press any key to continue
本文详细介绍了一种基于插入排序的高效算法——希尔排序。通过定义表长和一系列增量,该算法实现了对数组的有效排序。代码示例展示了如何使用C语言实现希尔排序,并提供了完整的程序代码,包括初始化数组、确定增量序列、进行排序以及打印排序后的结果。
1641

被折叠的 条评论
为什么被折叠?



