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

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