數據結構——鏈表

簡介

數組是一種線性表數據結構,它用一組連續的內存空間,來存儲一組具備相同類型的數據。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


數組的使用場景

  1. 若是對數據大小有個大概的瞭解,並且對數組的操做很是簡單,也能夠直接使用數組。
  2. 對於通常的系統業務開發,能夠直接使用容器,畢竟對性能要求不高,但若是是針對底層的開發,須要將性能優化到極致,則推薦使用數組。

歡迎關注個人博客,及時獲取最新消息。

相關文章
相關標籤/搜索