淺談BitMap
BitMap就是用一個bit位來標記某個元素對應的value,而key即是這個元素。由於採用bit為單位來儲存資料,因此在可以大大的節省儲存空間。
1) BitMap的演算法思想
32位機器上,一個整形int在記憶體中佔32bit,可以用對應的32個bit位來表示十進位制的0-31個數,BitMap演算法利用這種思想處理大量資料的排序與查詢。
2) BitMap的優點
① 效率高,不許進行比較和移位。
② 佔用記憶體少,如N=10000000;只需佔用記憶體為N/8 = 1250000Bytes = 1.2M,如果採用int陣列儲存,則需要1.2M * 32即38.4M。
3) BitMap的缺點
無法對存在重複的資料進行排序和查詢。
4) map對映表
假設需要排序或查詢的總數N,那麼需要申請的記憶體空間為int a[N/32 + 1]。
其中a[0]在記憶體中佔32位,依此類推,BitMap表為:
a[0] --> 0 - 31
a[1] --> 32 - 63
a[2] --> 64 - 95
......
5) 將十進位制數轉換為對應的bit位的位移轉換
① 求N對應的在陣列a中的下標:N / 32。
② 求N對應的bit位:N % 32。
③ 利用移位0-31使得對應的bit位為1。
相關文章
- Bitmap優化詳談優化
- 淺淺談ReduxRedux
- 淺淺淺談JavaScript作用域JavaScript
- Celery淺談
- 淺談flutterFlutter
- 淺談JMM
- 淺談反射反射
- 淺談mockMock
- 淺談SYNPROXY
- 淺談Disruptor
- 淺談IHttpHandlerHTTP
- 淺談 PromisePromise
- 淺談PWA
- 淺談vuexVue
- 淺談JavaScriptJavaScript
- 淺談RMQMQ
- 淺談Zilliqa
- 淺談RxJavaRxJava
- 淺談NginxNginx
- 淺談 JavaScriptCoreJavaScript
- 淺談MVPMVP
- Jquery淺談jQuery
- 淺談CopyOnWriteArraySet
- ElasticSearch淺談Elasticsearch
- 機器學習淺談機器學習
- 淺談promisePromise
- 淺談框架框架
- 淺談mvcMVC
- 淺談遊戲遊戲
- 淺談RESTREST
- ZooKeeper淺談
- ElasticJob淺談AST
- 淺談WebSocketWeb
- 淺談HTMLHTML
- 淺談redux(一)Redux
- 淺談requests庫
- 淺談Mysql索引MySql索引
- iOS 淺談 RunloopiOSOOP