2016 - 2024

感恩一路有你

c语言优先级排序口诀 一道java面试题,20亿数字的文本排序,如何取前100?

浏览量:2837 时间:2021-03-17 11:28:10 作者:admin

一道java面试题,20亿数字的文本排序,如何取前100?

因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk

优先级队列也称为堆。它分为最小堆和最大堆。您提到的最小优先级队列是最小堆。这是一种二叉树。最小堆的主要特性是每个子树的根节点的值小于其子树的根节点的值。从堆中获取最小值并插入一个值并将堆调整为最小值的代价是log2(n)。该算法在时间排序调度算法中有很好的应用。这东西很有用。它通常与其他算法结合使用。例如,我们动态地给出一些数字,或者删除一些数字,然后询问当前数字的中位数是多少。或者动态插入或删除数字,并询问当前数字的最小值是多少。等待

c语言优先级排序口诀 c语言优先级排序 用队列实现从小到大排序

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。