在我们的生活的这个世界到处都是被排序过的东西。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……可以说排序无处不在。今天简单讲讲最快最简单的排序——桶排序。
尝试一下输入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
运行结果是:
时间: 2024-12-30 00:00:37