zoukankan      html  css  js  c++  java
  • 内部排序算法之基数排序

    桶式排序: 设置一个数组Count,大小为M,并初始化为零,于是Count有M个单元,开始时都是空的。当Ai被读入是Count[Ai]增加1,在所有的输入被读进纸盒,扫描数组Count,打印出排好序的表。该算法耗费O(M+N);

    基数排序是桶式排序(bucket sort)的推广。基数排序就是多趟桶式排序;

    算法步骤如下:

    例子对0-999的一组数字排序:

      第一趟基数排序后的桶:         

    0 1 512 343 64 125 216 27 8 729
    0 1 2 3 4 5 6 7 8 9

    第二趟基数排序后的桶

    8

    1

    0

    216

    512

    729

    27

    125

      343   64      
    0 1 2 3 4 5 6 7 8 9

    最后一趟的基数排序为:

    64

    27

    8

    1

    0

    125 216 343   512   729    
    0 1 2 3 4 5 6 7 8 9

    然后将每个桶里的数顺序输出即为正确数列;

    为了正确结果,该算法唯一可能出错的可能就是如果两个数出自同一个桶但顺序是错误的,不过此时各趟排序保证当几个数进入同一个通的时候,他们是以排序的顺序进入,可以保证得到正确的结果。

    该排序所用的时间是O(P(N+B)),P为排序趟数,B为桶数,N为元素个数;

    Edit By SolarJupiter
  • 相关阅读:
    javaweb中静态文件的处理方法
    ThinkPHP5.0 模板函数
    ThinkPHP5.0 视图层
    ThinkPHP5.0 模型聚合操作
    ThinkPHP5.0 模型查询操作
    ThinkPHP5.0 模型删除操作
    ThinkPHP5.0 模型更新操作
    ThinkPHP5.0 模型新增操作
    ThinkPHP5.0 模型调用
    ThinkPHP5.0 数据库操作说明
  • 原文地址:https://www.cnblogs.com/HuaiNianCiSheng/p/3096319.html
Copyright © 2011-2022 走看看