java窗口按鈕位置 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?這是TOPK的經(jīng)典問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果??臻g復(fù)
一道java面試題,20億數(shù)字的文本排序,如何取前100?
這是TOPK的經(jīng)典問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果??臻g復(fù)雜度為k,時間復(fù)雜度為nlogk
模式1:使用fileoutputstream及其構(gòu)造函數(shù)(如下所示)。如果append參數(shù)為true,則字節(jié)將寫入文件末尾,這相當(dāng)于追加信息。如果append參數(shù)為false,則覆蓋文件。
方法2:使用filewriter,其構(gòu)造函數(shù)也有一個append參數(shù)。設(shè)置為true
方法三:使用RandomAccessFile,這個類可以設(shè)置指針在文件的任何位置插入數(shù)據(jù),即不僅在文件的末尾,還可以在其他位置插入數(shù)據(jù)。
我希望我的回答能對你有所幫助