有10億個浮點數,從中找出1萬個最大的數。

1、給一個基於最小二叉堆的方案:

<br /> 第一階段,向最小二叉堆中插入前一萬個浮點數;

<br /> 第二階段,從第一萬零一個浮點數開始,將之與最小二叉堆頂部的最小值比較。如果小於這個最小值,把最小值彈出並將新值插入到二叉堆中。重複此過程直到遍歷完成。

 

 

2、可以用分段的方法,在數據結構版看mathe給的(可能題目不太一樣),大致是這樣的: <br />  <br /> 開一個100萬的數組, <br /> 1,讀入100萬的數據 <br /> 2,找到最大的1萬個數據,有線性算法的 <br /> 3,現在數組裏只有1萬個數據了,取最小的那個數據 TempMin <br /> 4,再從源數據中讀數據,只保存比TempMin大的數據,其他數據丟棄 <br /> 5,當數據達到100萬或數據讀完時,用第二步的方法找到最大的1萬個,如果還有數據轉3,如數據讀完則結束 <br />

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章