纯C语言--希尔排序

#include
#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

你可能感兴趣的:(排序)