排序——桶排序
来源:互联网 发布:pc网络电视直播软件 编辑:程序博客网 时间:2024/06/05 16:18
假设现在有5个数字需要排序,分别是1 5 5 8 6;现在需要对这5个数字由小到大进行排序
-1.首先是申请一个一维数组,这里我申请一个大小为11的数组int a[11]
,这样就可以对大小为0~10的数字进行排序【上面给出的5个数字中最大的是8,所以我们也可以申请一个大小为9的数组(0~8
)】,在开始的时候,将数组a[0]到a[10]都初始化为0,表示为0~10
的数字都还没有出现过。例如:a[0]=0表示0这个数字还没有出现过,a[1]=2表示1这个数字出现过两次。
int a[11];for(int i=0;i<=10;i++){a[i]=0;}
-2.处理数字
第一个数字是1,那么就将对应的a[1]的值在原来的基础上增加1,表示1出现过一次。
第二个数字是5,就将对应的a[5]的值在原来的基础上增加1,表示5出现了一次。
第三个数字是5,就将对应的a[5]的值在原来的基础上增加1,即a[5]=2,表示5出现2次……同理余下的其他数字也是按照这种方法进行赋值。全部完毕后,a[1]=1,a[5]=2,a[6]=1,a[8]=1。其他均为0
-3.打印数字
数组a[0]~a[10]的值表示的就是0~10这11个数字出现的次数,只需要将出现过的数字打印出来,就完成了对数字的排序。
for(int 1=0;i<=10;i++){for(int j=1;j<=a[I];j++ ){printf(“%d”,i);}}最后输出数据就是 1 5 5 6 8如果要改为从大到小排序,只需要将输出部分的循环改为for(int i=10;i>=0;i- -)
总结:桶排序更适合数字较为集中,而且只要求对数字进行排序的情况。例如对1 0 21000000 20000001 3
这样子的5个数进行排序,你要需要申请21000000个“桶”来进行排序,这样会变得十分浪费空间,而且当需要排序的数不是整数,而是一些小数 的时候,使用桶排序也是极其不方便的。
阅读全文
0 0
- 排序—桶排序
- 排序——桶排序
- 排序—归并排序
- 排序—快速排序
- 排序—希尔排序
- 排序—选择排序
- 排序—希尔排序
- 排序—选择排序
- 排序算法——桶排序、冒泡排序、快速排序、选择排序
- 线性时间排序——计数排序,基数排序,桶排序
- 排序算法——桶排序
- 排序算法——桶排序
- 排序算法——桶排序
- 非比较排序——桶排序
- 排序算法之——桶排序
- 排序算法——桶排序
- 经典排序算法——桶排序
- 排序算法——桶排序
- HDU-5046 Airport(二分+DLX重复覆盖)
- 关押罪犯
- HDOJ2054
- 1088. Rational Arithmetic (20)
- 使用Postman作为客户端和Web API 2作为服务器进行基于令牌的认证
- 排序——桶排序
- 排序算法之冒泡排序
- 排序——快速排序
- Add More Zero
- bzoj1003 物流运输
- JavaWeb过滤器
- < 笔记 > Python
- JS数据类型
- 10-03 位运算