10G整數文件找出中位數或者第K大數

  1. 將10G整數分成2G讀5次,讀入內存中,每個數組歸入對應的桶中:
    1)將int分爲4Byte,取最高8位,分成256個桶(0-255)
    2)獲取每個整數的高8位,歸入對應的桶中
    3)讀完2G,將255個桶數據放入磁盤中
    4)依次讀完10G整數文件
  2. 針對0-255個桶,從0開始累加桶中數據size,找出中位數所處的桶
    計爲k1桶
  3. 將k1桶中整數,按照次高位放入0-255個桶【1)-4)】,找到對應的次高位桶k2
  4. k2桶中數字,同理找到次低位中桶k3
  5. k3桶中數字,可以直接快排,找出對應數字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章