算法说明:
- 将需要排的数放入一维数组a[11]。//此一维数组即为桶。
若a[i]=0,则表示无数据
若a[i]=1,则表示有数据,且数据的数量是1。
- 循环输出a[i],若a[i]!=0,则输出若干次,直到a[i]=0 。
复杂度分析:
- 是桶排序的时间复杂度,为 O(N+M)。
代码部分:
#include <stdio.h>
int main()
{
int a[11], i, j, t;
for ( i = 0; i <= 10; i++)
{
a[i] = 0;//数组初始化
}
for ( i = 1; i <= 5; i++)//循环读入5个数
{
scanf_s("%d", &t);//获取输入
a[t]++;//数组计数
}
for (i = 0; i <= 10; i++)//从a[0]~a[10]逐个输出
for (j = 1; j <= a[i]; j++)// 0表示不输出
printf("%d", i);
getchar(); getchar();//暂停程序,查看输出内容
//也可用system("pause");代替
return 0;
}
输入:
5 2 5 3 8
输出:
23558
总结:
- 这是一个非常快的排序算法。//时间复杂度低。
- 空间复杂度非常高。