java 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?因為這是一個Java問題,所以這是典型的TOPK問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最
一道java面試題,20億數(shù)字的文本排序,如何取前100?
因為這是一個Java問題,所以這是典型的TOPK問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果??臻g復(fù)雜度為k,時間復(fù)雜度為nlogk
,即范圍有限的整數(shù);int(integer)32位有符號整數(shù)-2^31到2^31-1之間的任意整數(shù);其他類型:字節(jié)8位有符號整數(shù)-128到127之間的任意整數(shù),short16位無符號整數(shù)-32768到32767之間的任意整數(shù),long64位有符號整數(shù)整數(shù)-介于2^63和2^63-1之間的任何整數(shù)