您現在的位置是:首頁 > 運動
資料結構與演算法--陣列(Array)
陣列取地址怎麼取
作者 | 浩說程式設計
[ 大廠技術資源 | 研發必備安裝包 | 限時免費獲取 ]
“ 資料結構與演算法”不管是在Java還是在任何語言中都是核心基礎知識,就像是蓋樓的地基一樣,它被廣泛的應用於架構的最底層,對於這部分知識的掌握程度能夠決定讀者以後的高度。
出於這個初衷開更本系列文章,希望能對讀者有所幫助。
讀者的收穫
1、瞭解陣列的概念
2、陣列的記憶體結構
3、陣列的定址邏輯
4、陣列的特性
5、日常使用中需要注意的問題
碼文不易
你的關注是浩說程式設計持續更新的動力
一、陣列的概念
陣列是用於儲存
相同資料型別
資料的一種線性資料結構,它在記憶體中是一組
連續
的記憶體空間。
二、陣列的定址邏輯
以上面的陣列為例,記憶體空間為陣列a分配的連續記憶體空間為10~27,若想取得a[3]的值,計算機是如何定址的呢:
首先,獲取記憶體為陣列a分配的
首地址
head_address=10,然後獲取目標位置3,最後獲取每個
元素佔用的記憶體空間
data_type_address=4(int型別資料每一位佔四個位元組),所以a[3]address = head_address+3*data_type_address
於是推匯出
定址公式
:
三、陣列的特性
一、
高效的隨機訪問
由於陣列在記憶體中連續分佈,所以隨機訪問元素非常高效,可以直接透過上面講的定址公式計算獲得。
二、
相對
低效的“插入”和“刪除”
任何事物都具有兩面性,同樣由於陣列在記憶體中連續分佈,所以在對陣列的中間元素進行“插入”或“刪除”操作時,為了保證記憶體空間的連續性,需要移動後面所有元素的位置,想象一下若後面的元素量相當龐大,那麼這個過程將非常低效耗時。
刪除同理上移
四、陣列下標越界問題(ArrayIndexOutOfBoundsException)
陣列下標越界問題是讀者日常開發中需要特別注意的,對於入門階段的讀者應該尤其關注,看下面這段程式碼:
由於陣列array的最大下標為array[3],於是當i=4的時候,控制檯就會拋越界異常,讀者需要特別注意。
以上就是陣列的全部內容,之所以將陣列放在資料結構與算法系列的第一篇,是因為陣列是最好理解的資料結構,有一個好的開篇能讓讀者更有信心進行之後的學習。
作者 | 浩說程式設計
[ 大廠技術資源 | 研發必備安裝包 | 限時免費獲取 ]
推薦文章
- 摩梭族的走婚儀式,不要靠女性養孩子,男方不用承擔任何責任
三、現在的時代,如果想要撫養一個孩子,需要考慮太多的因素摩梭族的走婚是不需要考慮家庭經濟條件的,而且都是由女性撫養孩子...
- 成都美食之紅油抄手的簡單速成法,在家也可以吃到正宗的!
取一張抄手皮放入適量的肉餡對摺成一個三角形,三角形的一頭用筷子摸上點水或者就用弄肉餡的筷子一抹就行,輕微沾溼即可捏好的抄手,是不是有點像個小元寶按同一個方法包好所有的抄手(一次可以多包點,吃不完放冷凍室,隨吃隨取)拿一個碗,調入生抽2勺,辣...
- 文化使者遊燕紅:從留守婦女到古村講解員
表面上看,講解員是為遊客講解古村各種文化的單向灌輸的過程,但遊燕紅卻認為,這實際上是一個雙向學習的過程...