數組是一種線性表數據結構,它用一組連續的內存空間,來存儲一組具備相同類型的數據。git
計算機會給每一個內存單元分配一個地址,計算機經過地址來訪問內存中的數據,當計算機須要隨機訪問數組中的某個元素時,它會經過下面的尋址公式,計算出該元素存儲的內存地址。github
公式以下:數組
a[i]_address = base_address + i * data_type_size
// data_type_size 表示數組中每一個元素的大小,好比:當數組類型爲 int 時,data_type_size 就爲 4
複製代碼
插入性能優化
假設數組 a[10] 中存儲了五個元素以下:1,2,3,4,5。如今要將元素 8 插入到 3 的位置,咱們只須要將 3 放到 a[5] 而後再將 a[2] 賦值爲 8 便可。這樣一來,數組插入一個元素的時間複雜度就會變爲 O(1)。bash
前提:該數組不須要排序數據結構
刪除性能
假設數組 a[10] 中存儲了五個元素以下:1,2,3,4,5。如今要將 1,2 刪除,咱們不須要移動別的元素補全被刪除的元素,而是換另外一種方法,將刪除的元素標記起來,在數組新增元素的時候,判斷數組的空間是否足夠,當數組空間不足時,再把標記刪除的元素刪掉,這樣一來,時間複雜度就變爲O(1)。優化
拿 ArrayList 來舉例, ArrayList 沒法存儲基本類型,好比 int、long,須要封裝爲 Interger、Long 類,並且封裝過程當中的「自動裝箱」和「自動拆箱」會消耗必定的性能。spa