最小堆建立过程 一道java面试题,20亿数字的文本排序,如何取前100?
浏览量:1360
时间:2021-03-14 14:01:07
作者:admin
一道java面试题,20亿数字的文本排序,如何取前100?
因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk
顾名思义,即堆的每个节点都大于其后代,称为大根堆,堆的每个节点都小于其左右后代,称为小根堆。
最大堆和最小堆原理?
最大堆和最小堆是指堆的顶部分别有最大或最小元素的堆,也称为大顶堆和小顶堆。堆是一种基本的抽象数据类型,通常用二叉树表示并递归定义。堆的顶部是树的根,这确保树或子树的根始终大于或小于子节点。优先级队列是堆的一个实例。使用最大堆还是最小堆取决于实际情况和个人定义。cqueue的STL中的容器优先级实现了优先级队列,默认为big top heap。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。