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

一道java面试题,20亿数字的文本排序,如何取前100?因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最

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

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

int num=72//定义一个变量num来存储数字int a=72 //num,取10的余数得到一位数int b=72/10//num,再除以10得到十位数。由于B是成形的,小数位数将自动省略

private static int maxvaluefive=9999999

private static int minvaluefive=0

private static atomicinteger Atomic=new atomicinteger(minvaluefive)]/**生成序号*/

static string getseqfive(int coverpad){

for(){int电流=原子。获取()

int newValue=current>=maxvaluefive?minvaluefive:当前1

如果(原子比较数据集(current,newValue)){

返回StringUtils.leftPad文件( String.valueOf值(当前),coverPad,“0”)

}

}