最快最简单的排序(之二)——桶排序(简化版)

本文介绍了桶排序的基本概念和工作原理,并通过示例代码详细解释了如何使用桶排序进行高效排序,同时对比了桶排序与其他排序算法的时间和空间复杂度。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值