您現在的位置是:首頁 > 運動

資料結構與演算法--陣列(Array)

由 浩說程式設計 發表于 運動2021-10-27
簡介作者 | 浩說程式設計[ 大廠技術資源 | 研發必備安裝包 | 限時免費獲取 ]“ 資料結構與演算法”不管是在Java還是在任何語言中都是核心基礎知識,就像是蓋樓的地基一樣,它被廣泛的應用於架構的最底層,對於這部分知識的掌握程度能夠決定讀者

陣列取地址怎麼取

作者 | 浩說程式設計

[ 大廠技術資源 | 研發必備安裝包 | 限時免費獲取 ]

資料結構與演算法--陣列(Array)

“ 資料結構與演算法”不管是在Java還是在任何語言中都是核心基礎知識,就像是蓋樓的地基一樣,它被廣泛的應用於架構的最底層,對於這部分知識的掌握程度能夠決定讀者以後的高度。

出於這個初衷開更本系列文章,希望能對讀者有所幫助。

讀者的收穫

1、瞭解陣列的概念

2、陣列的記憶體結構

3、陣列的定址邏輯

4、陣列的特性

5、日常使用中需要注意的問題

碼文不易

你的關注是浩說程式設計持續更新的動力

一、陣列的概念

陣列是用於儲存

相同資料型別

資料的一種線性資料結構,它在記憶體中是一組

連續

的記憶體空間。

資料結構與演算法--陣列(Array)

二、陣列的定址邏輯

以上面的陣列為例,記憶體空間為陣列a分配的連續記憶體空間為10~27,若想取得a[3]的值,計算機是如何定址的呢:

首先,獲取記憶體為陣列a分配的

首地址

head_address=10,然後獲取目標位置3,最後獲取每個

元素佔用的記憶體空間

data_type_address=4(int型別資料每一位佔四個位元組),所以a[3]address = head_address+3*data_type_address

於是推匯出

定址公式

資料結構與演算法--陣列(Array)

三、陣列的特性

一、

高效的隨機訪問

由於陣列在記憶體中連續分佈,所以隨機訪問元素非常高效,可以直接透過上面講的定址公式計算獲得。

二、

相對

低效的“插入”和“刪除”

任何事物都具有兩面性,同樣由於陣列在記憶體中連續分佈,所以在對陣列的中間元素進行“插入”或“刪除”操作時,為了保證記憶體空間的連續性,需要移動後面所有元素的位置,想象一下若後面的元素量相當龐大,那麼這個過程將非常低效耗時。

資料結構與演算法--陣列(Array)

刪除同理上移

四、陣列下標越界問題(ArrayIndexOutOfBoundsException)

陣列下標越界問題是讀者日常開發中需要特別注意的,對於入門階段的讀者應該尤其關注,看下面這段程式碼:

資料結構與演算法--陣列(Array)

由於陣列array的最大下標為array[3],於是當i=4的時候,控制檯就會拋越界異常,讀者需要特別注意。

以上就是陣列的全部內容,之所以將陣列放在資料結構與算法系列的第一篇,是因為陣列是最好理解的資料結構,有一個好的開篇能讓讀者更有信心進行之後的學習。

作者 | 浩說程式設計

[ 大廠技術資源 | 研發必備安裝包 | 限時免費獲取 ]

推薦文章