• 基数排序总结


    基数排序——线性排序方法?

    标签:知识点总结
    阅读体验:https://zybuluo.com/Junlier/note/1307580

    吐槽

    网上看了几篇就能弄懂了,这个东西其实挺简单的
    比起那些什么(FFT,NTT,后缀XXX......)来说还是很简单的,并且还比较有用

    具体实现

    基数排序,顾名思义,是基于数列中每个数的每一位而完成的排序
    就是分别对每一位(个十百千万)进行排序,最后得到一个真正有序的序列

    (Method) (1)

    首先,对当前序列以个位上的值为关键字进行排序
    然后,对排序后的序列以十位上的值为关键字进行排序
    (......)以此类推(......)直到最后一位




    为什么这样会是对的
    其实心中应该是有个大概的(这个还是很显然
    想一想,按照上述方法排序后,是不是等同下面这种排序方法

    以最高位为第一关键字,最高位相等时,以次高位为第二关键字......以个位为第(K)关键字((K)当然是序列中最大数的位数)进行排序

    可以理解上面这种排序方法一定是正确的吧(你比较两个数大小不就这么比的吗)
    而基数排序的实现其实本质上就是这样的

    (Method) (2)

    其实我用第二种实现方法直接证明正确性更直观(简直和那段理想排序方法一模一样)
    就是对最高位进行排序
    如果序列中有多个数最高位上的值相同,那么递归做那一个最高位,回到上一行
    这个不就很显然了吗(......)

    复杂度?

    标题不是说了线性吗
    不信(?......)那,常数(×)线性
    哦,不要我讲了,那我走了

    复杂度还用我讲吗?不就是(O(K×n))(K)是最高位(最大数的位数)
    你以为别人出题(K)能出多大,你(long) (long)也就装(18)位(虽然这就基本不如快排(sort)了)
    你就当他是个常数吧,行行行,(O(n))




    又是一篇好短的总结。。。
    他真的就只有这么多,我想啰嗦也就只能啰嗦这两行。。。

  • 相关阅读:
    Md5密码加密
    Java Email 发送
    java 对象的修改
    修改表内部分字段根据查询而来 update select from
    转载:MySQL join on +多条件与where的区别
    反射机制
    转载-Java Nio
    Java 中的static
    springMVC的请求流程
    myEclipse 中的svn图标详解
  • 原文地址:https://www.cnblogs.com/cjoierljl/p/9775599.html
Copyright © 2020-2023  润新知