标签:桶排序
桶排序思想:
假如数组bucketArr[9] = {0};初始化为0;如下:
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
下标:0 1 2 3 4 5 6 7 8 9
假如要排序的数为:3 2 2 8 9 9,最大的数不能超过定义桶数组的最大下标。
则将出现的数放到桶中,相应下标的桶加1。则结果为:
| 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 1 | 2 |
现在只要输出:下标为2则输出两个2,下标为3这输出1个三,依次类推,0不输出。
例子:代码实现如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
int j = 0;
int temp = 0;
/*假如是5个数排序,且数都小于10。举例说明桶排序*/
int bucketArr[11] = {0};//11个桶
printf("请输入要输入的5个数,小于等于10:");
for(;i<5;i++)
{
scanf("%d",&temp);
bucketArr[temp]++;
}
//从小到大,从大到小则i = 10即可
for(i = 0;i < 11;i++)//桶数
{
for(j = 0;j < bucketArr[i];j++)
{
printf("%d",i);
}
}
printf("\n");
system("pause");
return 0;
}桶排序的时间复杂度为O(m+n)。桶数m+输入个数n。
标签:桶排序
原文地址:http://zhaoxiaohu.blog.51cto.com/10778115/1758177