zoukankan      html  css  js  c++  java
  • 最快最简单的排序(之二)——桶排序(简化版)

    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.下面简单补充一下时间复杂度的内容:

    桶排序虽然能很高效完成排序!但是从上面的程序可知,非常浪费空间!算法之间没有哪种算法是非常好的,根据实际情况选择!在接下来可以了解一下简单排序(之三)快速排序

  • 相关阅读:
    android WebView 加载html5
    android 摄像头的使用
    android 传感器类 sensor
    关于java的一些东西
    android 网络连接管理机制
    利用Layout实现Button的不规则布局
    Android 推送通知指南(转载)
    android开发小问题随记(附1)
    ubuntu下搭建android开发环境(转载)
    北斗小辣椒双核升级攻略之一
  • 原文地址:https://www.cnblogs.com/fengxuehuanlin/p/4897006.html
Copyright © 2011-2022 走看看