桶排序算法
- 若要对0~100内的数进行由大到小或由小到大排序,就要定义一个能存放101个数的数组
- 对数组内的每一个值都初始为0
- 通过scanf()函数从键盘输入数值
- 从键盘接收到的值对应数组下标,并将其加1,表示该下标对应的数值存在。该下标对应的值为几,就表示该数字出现了几次
- 用双重循环打印从键盘上输入的值(从大到小/从小到大)。外部循环是局限循环的次数(遍历完数组内的所有值循环结束),内部循环是确定数组内每个值的出现的次数
#include <stdio.h>
int main()
{
int book[101],i,j,n,t;
for(i=0;i<=100;i++)
book[i]=0;
printf("待输入的数字个数为:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&t);
book[t]++;
}
for(i=0;i<=100;i++)
for(j=1;j<=book[i];j++)
printf("%d ",i);
return 0;
}
代码呈现效果:
桶排序的缺点:浪费空间。简明说,输入的正整数的最大值为多少,就要最少申请多少个数组空间。很明显,这个方法对于有小数的数字排序就无能为力了。