标签:桶排序
桶排序思想:
假如数组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