2016 - 2024

感恩一路有你

八大排序时间复杂度 一道java面试题,20亿数字的文本排序,如何取前100?

浏览量:1125 时间:2021-03-12 12:58:08 作者:admin

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

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

使用改进的快速行。每次看到选定的校准号是在左半部分还是在右半部分,然后根据要求对其余部分进行排序。例如,总共有10个数字。如果第一次校准的数字在第三位,只需取3的右边的数字,中间值必须在右边。理论期望为O(n)或按桶排序,排序的复杂度为O(n),然后求出中值。

八大排序时间复杂度 算法复杂度大小排序 哈希排序和桶排序

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