數組(Array)是一種線性表資料結構。它用一組連續的記憶體空間,來存儲一組具有相同類型的資料。
查找元素快:通過索引,可以快速通路指定位置的元素
線性表&非線性表示
在非線性表中,資料之間并不是簡單的前後關系。
時間複雜度
數組支援随機通路,根據下标随機通路的時間複雜度為 O(1)
插入操作
時間複雜度為 O(n),假設數組的長度為 n,現在,如果我們需要将一個資料插入到數組中的第 k 個位置。為了把第 k 個位置騰出來,給新來的資料,我們需要将第 k~n 這部分的元素都順序地往後挪一位。
public void add(int index, E e) {
if (size == data.length)
throw new IllegalArgumentException("array list is full");
if (index < 0 || index > size) {
throw new IllegalArgumentException("add error");
}
for (int i = size - 1; i >= index; i--) {
data[i + 1] = data[i];
}
data[index] = e;
size++;
}
複制
删除操作Delete
時間複雜度為 O(n),
動态數組
public void resize(int newCapcity){
E[] newData =(E[])new Object[newCapcity];
for(int i = 0;i<size;i++){
newData[i] = data[i];
}
data = newData;
}
複制