數據結構與算法(二)數組

隨機訪問

1.數組Array是線性表,用一組連續的內存空間,存儲一組相同數據類型的數據。這個特性決定了隨機訪問的基礎。

2.線性表:數組、隊列、鏈表、棧。非線性表:樹、圖、堆

3.一維數組尋址公式:a[i]_adress = base_adress + i * data_type_size

插入與刪除

1.插入的最好時間複雜度爲O(1),最壞時間複雜度爲O(n),平均時間複雜度爲O(n)

每次插入都會引起插入位置後所有數據的遷移,所以不能用均攤時間複雜度

2.刪除同插入

刪除的優化:並不是真正刪除,而是標記該位置爲刪除,等數組內空間不足時,執行一次真正的刪除。這也是jvm標記清除垃圾回收算法的思想

下標越界

ArrayIndexOutOfBoundsException

數組容器

java的ArrayList封裝了數組操作的很多細節,同時支持動態擴容(1.5倍)。創建時指定大小,有助於節省多次擴容和數據搬遷操作。對性能有些許損耗,除非是做底層框架,否則影響不大

補充

二維數組尋址公式:對於a[m][n]的二維數組,a[i][j]_adress = base_adress + ( i*n + j ) * data_type_size

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章