java升序排序代碼 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?既然是java題,這就是經(jīng)典的topk問題。先取前100個(gè)數(shù),建立一個(gè)最小堆,剩下的數(shù)依次從堆頂插入元素,同時(shí)調(diào)整堆。最后堆中的100個(gè)元素即
一道java面試題,20億數(shù)字的文本排序,如何取前100?
既然是java題,這就是經(jīng)典的topk問題。先取前100個(gè)數(shù),建立一個(gè)最小堆,剩下的數(shù)依次從堆頂插入元素,同時(shí)調(diào)整堆。最后堆中的100個(gè)元素即為結(jié)果??臻g復(fù)雜度為k,時(shí)間復(fù)雜度為nlogk
為什么java的arrays類的sort方法對(duì)對(duì)象數(shù)組采用合并排序,而對(duì)基本類型數(shù)組卻采用快速排序?
java中的arrays類的sort方法對(duì)于基本數(shù)據(jù)類型默認(rèn)的是進(jìn)行升序排列,比如:sort(int [] arr) 、sort(double [] arr)等等;
還有的時(shí)可以限制范圍排序,以下是在JDK的API中找到的:
從圖中可以看到在倒數(shù)第二和第三行中對(duì)于對(duì)象數(shù)組的排序也是默認(rèn)升序,但在輸入這行代碼之前要完成一個(gè)對(duì)你所要排序的對(duì)象數(shù)組的comparable的接口。以它為標(biāo)準(zhǔn)來進(jìn)行排序,具體怎么做看下圖: