C語言排序之希爾排序

希爾排序是 在 直接插入排序基礎之上做出的改進;

將要進行排序的序列按固定增量分成若干組,等距離者在同一組中,然後再在組中進行直接插入排序

#include <stdio.h>
void insort (int s[],int n)
{
	int i,j,d;
	while(d >= 1)
		{
			for(i = d+1;i<=n;i++)
				{
					s[0] = s[i];
					j = i-d;
					while ((j>0) && (s[0] <s[j]))
						{
							s[j+d]= s[j];
							j= j-d;
						}
					s[j+d] = s[0];
				 } 
				d = d/2;
			}	
}
void main()
{
	int a[11];
	int i;
	printf("請輸入 10 個數據:");
	for (i=0;i<10;i++)
		scanf("%d",&a[i]);
	printf("原始順序是: ");
	for (i=0;i<10;i++)
		printf("%3d",a[i]);
	insort(a,10);//調用 自定義函數 insort()
	printf("\n插入數據排序後的順序是:");
	for (i=0;i<10;i++)
		printf("%3d",a[i]);
	printf("\n"); 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章