資料結構 陣列

2021-10-05 12:57:12 字數 1123 閱讀 8924

一,陣列的定義

陣列是一種線性表資料結構,它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。對關鍵概念的解釋如下:

1,線性表

線性表就是資料排成像一條線一樣的機構,每個線性表上的資料最多只有前和後兩個方向。除陣列,鍊錶,佇列,棧等都是線性表。

與其對應的是非線性表,比如二叉樹,堆,圖等,之所以叫非線性,是因為在非線性表中,資料之間並不是簡單的前後關係。

2,連續的記憶體空間和相同型別的資料

這兩個限制條件,才有了堪稱「殺手鐗」的特性:「隨機訪問」。同時也讓陣列的操作很低效。例如陣列中的刪除和插入乙個陣列,為了保持連續性,需要做大量的資料搬移工作。

二,陣列如何訪問元素

a[i]_address = base_address + i * data_type_size

其中data_type_size表示陣列中每個元素的大小。

說明一下,鍊錶與數值比較的區別:鍊錶插入,刪除時間複雜度是

三,陣列的優勢

在需要定義多維陣列或者資料大小事先已知,並且對資料的操作非常簡單時可以使用陣列。

四,陣列下標為何是從0開始

從陣列儲存的記憶體模型上來看,「下標」最確切的定義應該是「偏移(offset)」。前面也講到,如果用a來表示陣列的首位址,a[0]就是偏移為0的位置,也就是首地 址,a[k]就表示偏移k個type_size的位置,所以計算a[k]的記憶體位址只需要用這個公式: a[k]_address = base_address + k * type_size ;但是,如果陣列從1開始計數,那我們計算陣列元素a[k]的記憶體位址就會變為: a[k]_address = base_address + (k-1)*type_size; 對比兩個公式,我們不難發現,從1開始編號,每次隨機訪問陣列元素都多了一次減法運算,對於cpu來說,就是多了一次減法指令。 

學習於極客時間 王爭老師

資料結構 陣列

建立陣列 大小為50 棧空間存myarray引用 堆空間存乙個大小為50,預設值為0的陣列。棧空間myarray引用指向堆空間該陣列。int myarray new int 50 public class testarray public class testarray if s intarray....

資料結構 陣列

陣列 就是相同型別的資料按一定順序排列的集合,把有限個型別相同的資料元素用乙個名字表示,通過編號來區分。名字即為陣列名,編號即為下標。陣列是最簡單 使用最廣泛的一種資料結構,其實就是一塊連續的記憶體,哪怕物理上不連續,邏輯上也是連續的,連續存放著一組相同型別資料元素。陣列的定義 type 變數名 n...

資料結構 陣列

陣列 陣列是一種佔據連續記憶體並按順序儲存資料的簡單的資料結構。建立陣列時,需要首先指定陣列的容量,然後依據大小分配記憶體。由於有時候我們需要使用陣列的容量不確定,可能開闢的記憶體遠超實際使用的記憶體,所以陣列的空間效率不好。由於陣列在記憶體中是連續的儲存空間,所以它的時間效率很高,可以在o 1 的...