zoukankan      html  css  js  c++  java
  • 线性时间排序:计数排序、计数排序、桶排序

    计数排序:

    对于比较密集的整数,比如全校学生的成绩(0-100),直接放入101个桶(计数器),设置桶宽为1即可,稳定排序。

    基数排序:

    对于已知长度的整数,比如三位数,可以先排序个位数,然后十位数,然后百位数(不是从上往下排),稳定排序。

    桶排序:

    对于[0,1),这样的double型均匀分布,可以采用桶排序,桶内采用快排等其他排序思路,稳定排序。

    题目:从100G个32位int数据里取出中位数

    解答:32无符号int最多只能表示4G的数据,因此可以划出1M个桶,每个桶宽度为4K,读入数据,对每个桶进行计数排序(需要用long类型计数),找到中位桶,以及中位数在其的位置,然后对中位桶进行计数排序即可,需两趟读取,时间复杂度2N。

  • 相关阅读:
    今日SGU 5.27
    今日SGU 5.26
    今日SGU 5.25
    软件工程总结作业
    个人作业——软件产品案例分析
    个人技术博客(α)
    结对作业二
    软工实践 二
    软工实践 一
    《面向对象程序设计》六 GUI
  • 原文地址:https://www.cnblogs.com/tonyluis/p/5940227.html
Copyright © 2011-2022 走看看