java 一道java面试题,20亿数字的文本排序,如何取前100?
一道java面试题,20亿数字的文本排序,如何取前100?因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最
一道java面试题,20亿数字的文本排序,如何取前100?
因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk
,即范围有限的整数;int(integer)32位有符号整数-2^31到2^31-1之间的任意整数;其他类型:字节8位有符号整数-128到127之间的任意整数,short16位无符号整数-32768到32767之间的任意整数,long64位有符号整数整数-介于2^63和2^63-1之间的任何整数