所謂位圖虹茶,就是用一個(gè)位(bit)來(lái)標(biāo)記某個(gè)元素對(duì)應(yīng)的值疑故,而鍵就是該元素撮奏。才用位為單位的來(lái)存儲(chǔ)數(shù)據(jù)俏讹,可以大大節(jié)省存儲(chǔ)空間。
位圖通過(guò)使用位數(shù)組來(lái)表示某些元素是否存在畜吊,可進(jìn)行數(shù)組的快速查找泽疆、判重、刪除玲献。
下面來(lái)看一個(gè)排序的示例殉疼。假設(shè)要對(duì) 0~7 中的 5 個(gè)元素(4梯浪,2,5瓢娜,3挂洛,1)進(jìn)行排序,我們采用位圖的方法來(lái)實(shí)現(xiàn)快速排序:
因?yàn)橐硎?8 個(gè)數(shù)眠砾,所以只需要 8 位虏劲,由于 8 位等于 1 字節(jié),所以開(kāi)辟 1 字節(jié)的空間就夠了褒颈。將這個(gè)空間所有位都置 0 柒巫,如圖(第一行代表列序號(hào)):
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
然后遍歷 5 個(gè)元素,因?yàn)榇判虻牡谝粋€(gè)元素是 4 谷丸,所以把 4 對(duì)應(yīng)的位置置為 1 堡掏。因?yàn)閺?0 開(kāi)始計(jì)數(shù),所以第 5 位重置為 1 刨疼。如下圖所示:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
對(duì)待排序的其它元素依次這樣處理布疼,最后得到結(jié)果:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
最后遍歷這個(gè)位區(qū)域,將某位是 1 的位的編號(hào)(1币狠,2,3砾层,4漩绵,5)輸出,就達(dá)到了排序的目的肛炮。
附:位止吐、字符、字節(jié)區(qū)別
1侨糟、計(jì)算機(jī)存儲(chǔ)信息的最小單位碍扔,稱之為位(bit),音譯比特秕重,二進(jìn)制的一個(gè)“0”或一個(gè)“1”叫一位不同。
2、計(jì)算機(jī)存儲(chǔ)容量基本單位是字節(jié)(Byte)溶耘,音譯為拜特二拐,8個(gè)二進(jìn)制位組成1個(gè)字節(jié),一個(gè)標(biāo)準(zhǔn)英文字母占一個(gè)字節(jié)位置凳兵,一個(gè)標(biāo)準(zhǔn)漢字占二個(gè)字節(jié)位置百新。
3、計(jì)算機(jī)存儲(chǔ)容量大小以字節(jié)數(shù)來(lái)度量庐扫,1024進(jìn)位制:
1024B=1K(千)B
1024KB=1M(兆)B
1024MB=1G(吉)B
1024GB=1T(太)B
以下還有PB饭望、EB仗哨、ZB、YB 铅辞、NB厌漂、DB,一般人不常使用了巷挥。
4桩卵、字符是一種符號(hào),同以上說(shuō)的存儲(chǔ)單位不是一回事倍宾。