桶排序
2016-03-29 20:28
330 查看
桶排序思想:
假如数组bucketArr[9] = {0};初始化为0;如下:
下标:0 1 2 3 4 5 6 7 8 9
假如要排序的数为:3 2 2 8 9 9,最大的数不能超过定义桶数组的最大下标。
则将出现的数放到桶中,相应下标的桶加1。则结果为:
现在只要输出:下标为2则输出两个2,下标为3这输出1个三,依次类推,0不输出。
例子:代码实现如下:
假如数组bucketArr[9] = {0};初始化为0;如下:
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
假如要排序的数为:3 2 2 8 9 9,最大的数不能超过定义桶数组的最大下标。
则将出现的数放到桶中,相应下标的桶加1。则结果为:
0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 1 | 2 |
例子:代码实现如下:
#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。
相关文章推荐
- 输出型号图片
- 显卡驱动下载的路径
- DbUtils(可以代替SQLite)
- 循序渐进之Maven(1) - 搭建环境
- iOS -多字体混合
- Java的重载(Overload)与重写(Override)
- 【NOIP2012提高组】疫情控制
- 基于REST的web service project添加spring框架
- eclipse实现存储位置更改
- JS学习笔记(二)
- MySql存储引擎
- poj 1006 中国剩余定理
- Codeforces 658 C. Bear and Forgotten Tree 3(树的构造)
- 第五周上机实践项目 项目1--三角形类雏形(5)
- 82. Remove Duplicates from Sorted List II
- 普通型母函数详解及其模板类型
- 设置一个三角形类(2)
- 探索小游戏(二):英雄骨骼动画和基本操作
- 《Java必须知道的300个问题》读书总结
- Http状态码大全(200、404、500等)