點陣圖排序
所謂點陣圖,就是用一個位(bit)來標記某個元素對應的值,而鍵就是該元素。才用位為單位的來儲存資料,可以大大節省儲存空間。
點陣圖通過使用位陣列來表示某些元素是否存在,可進行陣列的快速查詢、判重、刪除。
下面來看一個排序的示例。假設要對 0~7 中的 5 個元素(4,2,5,3,1)進行排序,我們採用點陣圖的方法來實現快速排序:
因為要表示 8 個數,所以只需要 8 位,由於 8 位等於 1 位元組,所以開闢 1 位元組的空間就夠了。將這個空間所有位都置 0 ,如圖(第一行代表列序號):
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
然後遍歷 5 個元素,因為待排序的第一個元素是 4 ,所以把 4 對應的位置置為 1 。因為從 0 開始計數,所以第 5 位重置為 1 。如下圖所示:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
對待排序的其它元素依次這樣處理,最後得到結果:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
最後遍歷這個位區域,將某位是 1 的位的編號(1,2,3,4,5)輸出,就達到了排序的目的。
附:位、字元、位元組區別
1、計算機儲存資訊的最小單位,稱之為位(bit),音譯位元,二進位制的一個“0”或一個“1”叫一位。
2、計算機儲存容量基本單位是位元組(Byte),音譯為拜特,8個二進位制位組成1個位元組,一個標準英文字母佔一個位元組位置,一個標準漢字佔二個位元組位置。
3、計算機儲存容量大小以位元組數來度量,1024進位制:
1024B=1K(千)B
1024KB=1M(兆)B
1024MB=1G(吉)B
1024GB=1T(太)B
以下還有PB、EB、ZB、YB 、NB、DB,一般人不常使用了。
4、字元是一種符號,同以上說的儲存單位不是一回事。
相關文章
- 演算法-點陣圖排序演算法排序
- 點陣圖
- ClickHouse 留存、路徑、漏斗、session 點陣圖 roaringbitmap 點陣圖最佳化Session
- 點陣圖索引(轉載)索引
- PHP 文字生成點陣圖PHP
- Redis 應用-點陣圖Redis
- 點陣圖字型匯入
- 可寫點陣圖(WriteableBitmap)
- 陣列排序陣列排序
- PHP掃描圖片轉點陣 二維碼轉點陣PHP
- Python點陣圖索引學習Python索引
- Android Bitmap(點陣圖)詳解Android
- 點陣圖與ERP場景
- 代理模式+react+ 圖片佔點陣圖模式React
- 陣列的排序陣列排序
- 物件陣列排序物件陣列排序
- js陣列排序JS陣列排序
- JavaScript 陣列排序JavaScript陣列排序
- 點陣圖(bitmap)原理以及實現
- 點陣圖索引的工作原理 - Richard索引
- layui圖片懶載入-loading佔點陣圖UI
- 為什麼處理排序陣列比未排序陣列快排序陣列
- hash join構建點陣圖的理解
- VC 點陣圖按鈕CBitmapButton的使用
- 雜湊表擴充套件—點陣圖套件
- 陣列氣泡排序陣列排序
- 陣列選擇排序陣列排序
- 二維陣列排序陣列排序
- c# 陣列排序C#陣列排序
- js陣列排序整理JS陣列排序
- 多維陣列排序陣列排序
- 一點點排序排序
- Oracle assm三級點陣圖結構解析OracleSSM
- Android實現二值點陣圖識別Android
- 陣列排序的實現陣列排序
- php 二維陣列排序PHP陣列排序
- PHP 多維陣列排序PHP陣列排序
- 二位陣列排序陣列排序
- c++陣列排序插入C++陣列排序