【排序】1.1简单桶排序
来源:互联网 发布:小米5移动卡没有4g网络 编辑:程序博客网 时间:2024/05/22 07:03
简单的“桶排序”:书中介绍的桶排序是借助一维数组解决问题。将数组下标作为已经排序的序列,将值存入数组中对应的位置,达到排序的目的。
题目一:5个同学分别考了5分、3分、5分、2分、8分,满分为10分;让计算机随机读入这5个数,按照分数从大到小输出。
输出结果:8 5 5 3 2
解:
思路:1.初始化大小为11的数组a[0]-a[10];
2.分数对于数组下标,存在则+1,代表出现的次数,比如,若5分,a[5]=1;
3.顺序输出,数组中值表示输出次数。
实现(C):
#include<stdio.h>int main(){ int a[11],i,j,x; for(i=0;i<=10;i++) { a[i]=0; } for(i=0;i<5;i++) { scanf("%d",&x); a[x]++; } for(i=10;i>=0;i--) { for(j=1;j<=a[i];j++) { printf("%d",i); } } getchar();getchar(); return 0;}
解:
思路:如上题,需要大小为1001的数组,1001个桶,来表示0-1000之间每个数出现的次数。
实现(C):
#include<stdio.h>int main(){ int a[1001],i,j,x,n; for(i=0;i<=1000;i++) { a[i]=0; } scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&x); a[x]++; } for(i=0;i<=1000;i++) { for(j=1;j<=a[i];j++) { printf("%d ",i); } } return 0;}
第一个循环执行m次(m为桶的个数),第二个循环执行n次(n为待排序数的个数),第三、四个循环共执行m+n次,共2*(m+n)次;
表示为O(2*(m+n)),忽略掉较小的常数,时间复杂度表示为O(M+N)。
总结:简化版的桶排序,速度非常快,但有局限性。
阅读全文
0 0
- 【排序】1.1简单桶排序
- 简单的桶排序
- 简单的桶排序
- 简单的桶排序
- 桶排序简单应用
- 桶排序(简单)
- 最简单的排序--桶排序
- 排序 -- 简单选择排序
- 排序-简单选择排序
- 排序。。。简单选择排序
- 排序之简单排序
- 排序一 简单排序
- 简单排序---冒泡排序
- 简单排序---选择排序
- 简单排序--插入排序
- 简单排序:冒泡排序
- 简单排序:选择排序
- 排序-简单选择排序
- javaIO基础
- Http协议基础
- <4> 头结点、头指针、和首元结点
- Ubuntu下安装MySQL数据库
- Mysql查询优化之 触发器加中间表 方法优化count()统计大数据量总数问题 转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6138288.ht
- 【排序】1.1简单桶排序
- Java IO流学习总结
- 配置TensorFlow的objetc_detection api,训练自己的数据
- 一条命令的简单脚本记录(1)
- 网络编程--UDP
- CDN内容分发网络架构
- 11.8
- fastjson学习及解析
- Sqoop1.99.7安装、配置和使用(二)