java是什么 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?因?yàn)檫@是一個(gè)Java問題,所以這是典型的TOPK問題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最
一道java面試題,20億數(shù)字的文本排序,如何取前100?
因?yàn)檫@是一個(gè)Java問題,所以這是典型的TOPK問題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最后100個(gè)元素就是結(jié)果??臻g復(fù)雜度為k,時(shí)間復(fù)雜度為nlogk
int num=72//定義一個(gè)變量num來存儲數(shù)字int a=72 //num,取10的余數(shù)得到一位數(shù)int b=72/10//num,再除以10得到十位數(shù)。由于B是成形的,小數(shù)位數(shù)將自動省略
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:當(dāng)前1
如果(原子比較數(shù)據(jù)集(current,newValue)){
返回StringUtils.leftPad文件( String.valueOf值(當(dāng)前),coverPad,“0”)
}
}