資料是怎樣儲存在計算機中的?
舉個例子:
假如你帶了3樣物品,你需要將他們放進儲物櫃裡,這時你需要3個儲物櫃把物品放進去。
計算機大致就是這樣儲存資料的。
計算機儲存資料的基本方式有兩種——陣列和鍊錶。
陣列就是將所有的元素放在一起。
假如有1,2,3,4四個數字你要將它們寫在紙上
| 1 | 2 | 3 | 4 | 這就是陣列。
當這樣的情況呢?
| | | x | | |
這裡雖然有4個位置但它們不是連在一起的,所以無法建立陣列。
如果在新增元素時遇到這種麻煩,那就要將所有元素全部換乙個位置來儲存(因為陣列必須是在一起的)。這就太麻煩了。
有一種解決方法是預留位置,即預留出一定數量的空位以便於新增元素。這樣的方法有兩個缺點:
1.預留的空位別人不能使用,這就意味著如果你用不上就浪費了預留的位置。
2.當新增數量大於預留位置時,還是需要切換位置。
很顯然這種解決方法顯得捉襟見肘。
對於這種情況可以用鍊錶解決。
鍊錶的元素可以儲存在記憶體的任何位置上,鍊錶的每個元素都儲存了下乙個元素的位址。從而使一系列的隨機位址串聯在一起。
這就類似與劇情類遊戲,你需要先到達當前任務的目的地才能獲得下乙個任務。
所以鍊錶的插入非常簡單。
事物都有兩面性。鍊錶與一樣插入非常方便相反的,查詢卻非常困難。
因為每個元素都儲存著下乙個元素的位址。說以當你想要訪問第2個元素時就必須先訪問第乙個元素。同樣的道理當你想訪問第一百個元素時你需要訪問前99個元素,這樣你才能獲得第100個元素的位址。
先說一說陣列的優點:
陣列中元素的編號是從0開始的。
應為陣列是連在一起的說以要查詢起來就十分的簡單。
當你知道第乙個元素的位置是0時,第二個元素的位置就是1,同樣的第一百個元素的位置是99.這樣查詢起來就非常簡單。
他們的讀取和插入的大o表示法分別為:
演算法 陣列和鍊錶
注 本文僅為筆記。原文 一維陣列記憶體定址公式 對於二維陣列 a n a i addr base addr i type size 二維陣列記憶體定址公式 對於二維陣列 a m n a i j addr base addr i n j type size 三維陣列記憶體定址公式 對於三維陣列 a m...
演算法 陣列和鍊錶
注 本文僅為筆記。原文 一維陣列記憶體定址公式 對於二維陣列 a n a i addr base addr i type size 二維陣列記憶體定址公式 對於二維陣列 a m n a i j addr base addr i n j type size 三維陣列記憶體定址公式 對於三維陣列 a m...
演算法 資料結構篇 陣列和鍊錶
演算法和資料結構都是非常基礎的內容,經常使用,但是又很容易被忽視,而被重視的時候往往是面試官提問的時候。之前很不理解為什麼面試官總喜歡問演算法和資料結構,日常價值不大的東西。後來隨著工作的深入,越發的理解 演算法 資料結構 程式 之所以後來理解了這個公式,系統學過演算法和資料結構的知識,清楚的知道它...