希尔排序C语言

编译环境:vc6.0

/*
给数组a[]排序,a[0]空着,作为整理牌时的临时存储空间,类似于swap里面的temp;
*/
#include 

//*************************希尔排序******************
void ShellSort(int a[])
{
     
	int i, j;
	int increment = 11;								//11个待排数
	do
	{
     
		increment = increment / 3 + 1;				//增量序列,增量的选取百度
		for(i=increment+1;i<=11;i++)
			if (a[i] < a[i - increment])			//如果小于就进行插入
			{
     
				a[0] = a[i];
				for (j = i - increment; j > 0 && a[0] < a[j]; j -= increment)
					a[j + increment] = a[j];							//将记录后移
				a[j + increment] = a[0];								//插入
			}
	} while (increment > 1);						//increment==1时退出
}

int main()
{
     
	int i;
	int a[12] = {
      0,423,2,6,34,543,23,53,23,2543766,9,0 };
	ShellSort(a);
	for (i = 1; i < 12; i++)
		printf("%d\t", a[i]);
	printf("\n");
}

结果
希尔排序C语言_第1张图片

你可能感兴趣的:(数据结构)