1. 程式人生 > >排序算法一:桶排序

排序算法一:桶排序

family getch 電子郵箱 -s class csharp soft n) 郵件

  在我們的生活的這個世界到處都是被排序過的東西。站隊的時候會按照身高排序,考試的名次需要按照分數排序,網上購物的時候會按照價格排序,電子郵箱中的郵件按照時間排序……可以說排序無處不在。今天簡單講講最快最簡單的排序——桶排序。

  嘗試一下輸入n個0~1000之間的整數,將它們從大到小排序。

代碼實現如下:

#include <stdio.h>
int main() {
	//桶排序
	//先確定變量
	//賦初始值
	//循環輸入數值
	//循環輸出數值
	printf("桶排序\n");
	int book[1001], i, j, t, n;
	for (i = 0; i <= 1000; i++)
		book[i] = 0;            //初始化為0
	printf("請輸入數值個數:");
	scanf("%d", &n);
	for (i = 1; i <= n;i++) {       //循環輸入n個數
		printf("第%d個數:",i);
		scanf("%d", &t);        //把每個數讀到變量t中
		book[t]++;              //進行計數
	}
	printf("排序結果:\n");
	for (i = 1000; i >= 0; i--)                //依次判斷編號1000~0的桶
		for (j = 1; j <= book[i]; j++)     //出現了幾次就將桶的編號打印幾次
			printf("%d\t",i);
	getchar();        //用來暫停程序,以便查看程序輸出的內容
	getchar();
	return 0;
}

輸入以下數據進行驗證:

10

8 100 50 22 15 6 1 1000 999 0

運行結果是:

技術分享

排序算法一:桶排序