순수 C 언어 - 힐 정렬

8101 단어 정렬
#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

좋은 웹페이지 즐겨찾기