您的位置:首页 > 其它

桶排序

2016-03-29 20:28 330 查看
桶排序思想:
假如数组bucketArr[9] = {0};初始化为0;如下:

0000000000
下标:0 1 2 3 4 5 6 7 8 9

假如要排序的数为:3 2 2 8 9 9,最大的数不能超过定义桶数组的最大下标。

则将出现的数放到桶中,相应下标的桶加1。则结果为:

0021000012
现在只要输出:下标为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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: