1. 程式人生 > >bit-map排序演算法

bit-map排序演算法

今天在查Bitmap點陣圖資料的時候無意中發現了一個Bit-Map無重複數字的陣列的排序演算法,所謂的Bit-map就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由於採用了Bit為單位來儲存資料,因此在儲存空間方面,可以大大節省。

演算法思想

32位機器上,一個整形,比如int a;在記憶體中佔32bit,可以用對應的32個bit位來表示十進位制的0-31個數,bitmap演算法利用這種思想處理大量資料的排序與查詢
優點:
  • 效率高,不許進行比較和移位
  • 佔用記憶體少,比如N=10000000;只需佔用記憶體為N/8 = 1250000Bytes = 1.2M,如果採用int陣列儲存,則需要38M多

缺點:
  • 無法對存在重複的資料進行排序和查詢

示例:
申請一個int型的記憶體空間,則有4Byte,32bit。輸入 4, 2,  1,  3時:
輸入4:


輸入2:


輸入1:


輸入3:



思想比較簡單,關鍵是十進位制和二進位制bit位需要一個map對映表,把10進位制對映到bit位上