wangfyyy
V2EX  ›  算法

千万条记录的数组找 Top100,什么算法时间复杂度较低

  •  
  •   wangfyyy · Jun 15, 2020 · 3305 views
    This topic created in 2332 days ago, the information mentioned may be changed or developed.

    时间复杂度最好小于 O(nlogn)

    8 replies  •  2020-07-04 06:10:34 +08:00
    Kilerd
    Kilerd
    Jun 15, 2020
    1
    限制 nLogN 那就快排一下,取前 100 (反正你也没要求空间复杂度
    xupefei
    xupefei
    Jun 15, 2020 via iPhone
    2
    heap sort,复杂度 n log100
    Perry
    Perry
    Jun 15, 2020 via iPhone
    3
    先找到没有排好的 top 100
    B1ankCat
    B1ankCat
    Jun 15, 2020
    4
    按理论来说最小堆就行
    takemeaway
    takemeaway
    Jun 15, 2020
    5
    O(1)即可
    unixeno
    unixeno
    Jun 15, 2020 via Android
    6
    构建一个 100 元素的小顶堆
    然后遍历数组,大于堆顶元素的时候就交换,然后调整堆
    wangfyyy
    wangfyyy
    OP
    Jun 15, 2020
    7
    看来这不是一道经典的面试题
    yishanhe
    yishanhe
    Jul 4, 2020
    8
    其实用堆的话 ,空间复杂度 是 O(k) 时间复杂度是 O(nlogk)
    这里的 k 就是 100
    已经比 O(nlogn) 小了

    如果要找比 O(nlogk) 还少的,那么就只能空间换时间了,可以用 bucket sort
    时间复杂度 O(n) 空间复杂度 也是 O(n)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1722 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 23:47 · PVG 07:47 · LAX 15:47 · JFK 18:47
    ♥ Do have faith in what you're doing.