java數(shù)組排序從小到大 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?因?yàn)檫@是一個Java問題,所以這是典型的TOPK問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最
一道java面試題,20億數(shù)字的文本排序,如何取前100?
因?yàn)檫@是一個Java問題,所以這是典型的TOPK問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果。空間復(fù)雜度為k,時間復(fù)雜度為nlogk
private sub form_uuuclick()
dim a(1到10)as integer
對于I=1到10
a(I)=InputBox(“please input”
next I
對于I=10到2 step-1,剩余的排序數(shù)據(jù)變量I定義了要在開頭搜索的所有數(shù)據(jù),即10。每個循環(huán)得到剩余數(shù)據(jù)的極值。最大值或最小值由下列替換條件確定
對于J=1到I-1“剩余數(shù)據(jù)內(nèi)部查詢變量J,所有數(shù)據(jù)都通過該變量進(jìn)行搜索。
如果a(J)> a(J 1),則“?替換條件,這里是當(dāng)前者大于后者時的替換條件,它們都是從小到大排序的
temp=a(j 1)“?更換開始
a(j 1)=a(j)
a(j)=溫度“?替換結(jié)束
結(jié)束if
下一個J
下一個I
對于I=1到10
打印一個(I)“”?打印出排序后的數(shù)據(jù)并用空格隔開。
下一個我
結(jié)束