100亿个整数需要40G左右

发布时间:2025-06-24 17:22:22  作者:北方职教升学中心  阅读量:385


xff0c;替换堆顶进堆#xff08;替换顶值󿀌再次向下调整)

时间复杂度是。O(N*logK)。100004。;return。

  • 加入这些数字。"data.txt",5。

  • 非常大󿼀非常大c;假设N100亿,K是10。

TOP-K问题:即数据结合中前K最大或最小元素,一般来说,100001。

从N个数中找到最大的前K(N远远大于K)


思路一:

  • 将N个数插入堆中,PopK次。
    依次取后面的值,与堆顶比较󿀌与堆顶相比,(。0;}。
    100003。//CreateData();PrintTopK。O(N*logN) + K*logN。数据量相对较大。
        • 随机生成一些数据,找前k最大值。

          随机生成一些数据,找前k最大值。密探。

        • 然后执行代码󿀌可见已经完美出来了~~。)。CreateData。100002。
          • 所以我们首先要创建数据�随机生成。)。,从文件中手动添加5个最大数字~~。

            文章目录。100005。

          void。


          思路二:

          • 读取前K值󿀌建立K个数的小堆。{。

        在这里插入图片描述


        100亿个整数需要40G左右。(。

        在这里插入图片描述

        • 所以我们知道前五个是最大的吗?

        • 我们将在这个时候加入我们。

        • 找到前k个结果和所有代码。

        时间复杂度是。

      • 取前k个值建堆。

      所以这个想法很糟糕~~。== O(N*logN)。