資料結構與演算法 06 陣列 Array

2022-09-07 16:45:22 字數 844 閱讀 9469

什麼是陣列呢?你的腦海中是不是第一反應是這樣的:

陣列 ( array )是一種線性表資料結構,它用一組連續的記憶體空間,來儲存一組具有相同型別的資料.

在定義上,咱們來死扣兩個概念.

a[i]_address = base_address + i * data_type_size

根據 cpu 的預讀機制,儲存的陣列就有可能被 cpu 全部讀入,在 cpu 中進行訪問,那個速度你可以想象~

咱們先來看一段 c 語言**:

#include

intmain

(int argc,

char

* ar**)

;for

(;i<=

3;i++

)return0;

}

仔細看,發現問題了嘛?這段**不會列印 3 行" hello world 「,而是會無限列印」 hello world ".

因為,陣列大小為 3 , a[0] , a[1] , a[2] ,例項**中因為書寫錯誤,導致 for 迴圈的結束條件錯寫成了i<=3,而不是i<3,所以當i=3時,會導致陣列a[3]訪問越界.在 c 語言中,只要不是訪問受限的記憶體,那麼所有的記憶體空間都是可以自由訪問的.如果a[3]=0恰好是i=0,迴圈就會又開始.

所以這段**就陷入了死迴圈.

參考:

資料結構與演算法 06 單調棧

顧名思義,單調的棧,可遞增或遞減,主要用於求解nge問題 next greater element 4 1,彈出1,棧為空,壓入4 2 4,壓入4 3 2,彈出2,3 4,壓入4 5 3,彈出3,5 4,彈出4,棧為空,壓入5 可以發現,每當有數被彈出時,將要入棧的數就是第乙個比彈出的數大的數 模板...

資料結構與演算法之美06

個人學習筆記總結,詳見資料結構與演算法之美 度娘 線性表 非線性表 陣列 1 儲存結構 鏈式儲存,前驅後繼關聯 2 操作 crud 前後索引關聯,涉及最優最糟問題 特點 非常低效 查詢操作 了解其儲存方式,即查詢就是通過陣列下標進行。插入操作 假設陣列的長度為n,現在,如果我們需要將乙個資料插入到陣...

資料結構與演算法之陣列

陣列的基本概念 陣列是最簡單最常用的資料結構,但是也有一些注意事項 1 陣列的分配方式以及儲存位置 2 初始化 3 不同語言中的陣列高階定義 4 多維陣列 c c 中陣列分配方式 1 int a 10 適用於陣列長度已知或者對陣列長度不敏感的情況,比如定義乙個字串。2 int a int mallo...