最快最简单的排序(之二)——桶排序(简化版)
1.简介:
从前面的冒泡排序可以发现一个问题,即使只有一个数没排好序,冒泡排序都要把所有相邻的数进行遍历一遍!这样效率就变的很低了!特别是在数非常多时就更加明显!下面就来介绍一种比较高效的排序方法——桶排序
- 先通过图来了解一下桶排序
注意: 椭圆里面的数,就是用于排序的数!长方形数组就是用来记录同样的数出现了几次。椭圆里面的每个数对应着数组的第几个位置,最后从小到大遍历数组,里面出现的数出现几次打印几次,就可以完成排序
下面还是要结合代码具体感受一下!
2.桶排序:
- 代码:
1 static void Main(string[] args) 2 { 3 int[] number = new int[100]; 4 Console.WriteLine("有多少个数:"); 5 int num; 6 if (int.TryParse(Console.ReadLine(), out num)) 7 { 8 for (int i = 0; i < num; i++) 9 { 10 int arr = Convert.ToInt32(Console.ReadLine()); //这里主要讲算法就不进行非法值的判断了 11 number[arr]++; //这就相当于一个桶,相同的数里面的值就自增1;++是值自增1, 12 } //而不是移向下一个数 13 14 } 15 else 16 { 17 Console.WriteLine("转换失败"); 18 } 19 Console.WriteLine("----------------------------------------"); 20 for (int i = 0; i < 100; i++) 21 for (int j = 1; j <= number[i]; j++) 22 { 23 Console.Write(i+" "); 24 } 25 26 Console.ReadKey(); 27 }
这里主要涉及数组知识,和自增运算符!
3.下面简单补充一下时间复杂度的内容:
桶排序虽然能很高效完成排序!但是从上面的程序可知,非常浪费空间!算法之间没有哪种算法是非常好的,根据实际情况选择!在接下来可以了解一下简单排序(之三)快速排序
转载于:https://www.cnblogs.com/fengxuehuanlin/p/4897006.html
最快最简单的排序(之二)——桶排序(简化版)相关推荐
- 《spark技术应用》课程期末考试大作业报告,使用eclipse完成求top值、文件排序、二次排序三个程序的个性化开发。
目录 一.选题的目的及要求... 4 二.设计思路... 4 三.主要内容及关键技术.. 5 四.制作步骤... 5 1.准备工作... 5 1.1在VMware中安装一台Ubuntu64位系 ...
- 排序算法:桶排序、计数排序、基数排序
相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 这篇博客将主要介绍三种时间复杂度是 ...
- 排序算法之--桶排序(桶,像桶一样的排序,听起来很有趣哦0。0)
排序算法之--桶排序 桶排序的工作的原理是将数组分到有限数量的桶子里,而这个有限数量是指多少个呢? 不急,容我细细道来:我们可以先求出这个数组的最大值和最小值,那么桶的数量就是max-min+1咯 为 ...
- 常用排序算法(八)桶排序
桶排序 概要 本章介绍排序算法中的桶排序.内容包括: 1. 桶排序介绍 2. 桶排序图文说明 3. 桶排序实现 3.1 桶排序C实现 3.2 桶排序C++实现 3.3 桶排序Java实现 转载请 ...
- java 桶排序_[图解] 桶排序
桶排序是一种排序的思想,其实现包括计数排序和基数排序两种,冒泡排序.选择排序.插入排序.归并排序.快速排序和堆排序都是基于比较的排序,而桶排序提出了一种新的思路,即基于数据状态的排序. 1. 桶排序的 ...
- leetcode912. 排序数组 有范围的排序统统用桶排序
给你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0 ...
- c语言桶排序,排序算法之——桶排序
这是本人的第一篇随笔,为的是分享学习经验,和大家讨论一些算法,以便取得些许进步,也是对学习的总结. 话不多说,下面我会用图文的方式向各位介绍桶排序. 1.主要思想: 桶排序的大体思路就是先将数组分到有 ...
- Mapreduce的排序、全排序以及二次排序
一:背景 Hadoop中虽然有自动排序和分组,由于自带的排序是按照Key进行排序的,有些时候,我们希望同时对Key和Value进行排序.自带的排序功能就无法满足我们了,还好Hadoop提供了一些组件可 ...
- python列表字母排序_Python_list(二)列表排序
list排序 按字母顺序排序 sort() .sort() 按字母排序,再也无法恢复到原来的排列顺序 示范 >>> name = ['congcong', 'yuxi', 'jing ...
- 排序算法_桶排序(箱排序)
一.算法描述 假设有一组长度为N的待排关键字序列K[1....n]. 首先将这个序列划分成M个的子区间(桶). 然后基于某种映射函数 ,将待排序列的关键字k映射到第i个桶中(即桶数组B的下标 i) , ...
最新文章
- SQL text字段的替换处理(无法批量更新,写法记录)
- 南京大学计算机2010年本科录取名单,2010高考本科录取名单
- 量子计算机计算时间复杂度,量子计算复杂性理论综述.PDF
- php代码实现对word文件的查找与替换,ThinkPHP5使用phpword实现文件模板字符替换
- C++泛型编程实现平衡二叉搜索树AVL
- mysql 表字段信息从一张表迁移到另一张表_MySQL(数据库)笔记
- Log4j Bug –减慢您的应用程序
- android的padding属性,以编程方式获取android:padding属性
- Jsoup根据URL加载一个Document
- 带你自学Python系列(十七):Python中类的用法(三)
- centos java创建文件_CentOS java生成文件并赋予权限的问题
- JAVA 集合Null 初始化_springboot使用mybatis-plus表单更新null值问题通用解决方案
- linux的jdk、tomcat、tomcat安装等
- 打造个人品牌的重要性被高估了
- apache + phpStudy 配置vue history模式
- 表上作业法matlab解决,MATLAB上机作业.doc
- ug计算机环境变量,ug80添加中文环境变量的具体方法
- OpenGL渲染YUV420P
- JAVA生成随机数工具类
- 信息系统与信息化、信息系统开发方法、常规信息系统集成技术
热门文章
- 四.Android adb命令(持续更新...)
- 常用单词缩写(不断更新)
- 利用OpenCV的库函数Sobel和Scharr作图像的边缘检测
- asp.net使用mysql教程_在C#程序中使用MYSQL数据库
- Logback 配置文件例子
- 网上的一篇spring security详解教程,觉得不错,转过来了
- 既然安卓是开源的 为何华为要 鸿蒙,安卓靠开源、免费赢得了天下,现在华为鸿蒙也是开源免费的! - 区块网...
- C 引用和指针的区别
- cocos2d-x环境配置和常见问题
- C语言博客作业--嵌套循环