天天看點

Array數組

數組(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;
    }           

複制