bit-map排序演算法
阿新 • • 發佈:2018-11-01
今天在查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位上