陣列一個簡單的資料結構
陣列資料結構用於在連續的記憶體塊中儲存類似的物件(或資料值)。陣列資料結構具有固定大小,它確定可以儲存在其中的資料值的數量。
陣列:C++方式
在 C++程式語言中,我們可以宣告一個靜態陣列如下
int arrayName[100];
這裡我們宣告瞭一個名為 arrayName
的陣列,它可以儲存多達 100 個值,所有這些值都是相同的型別,即整數。
現在,我們將討論此資料結構的一些優點和缺點
- 我們可以在 Constant Time 中訪問儲存在 Array 中的 Data Values,即時間複雜度為
O(1)
。因此,如果我們想要訪問儲存在第 i 個位置的資料值,我們不需要從起始位置開始並向上移動到第 i 個位置,但是我們可以直接跳到第 i 個位置,從而節省計算時間。 - 在陣列中間插入元素不是一項有效的任務。假設我們想在第 i 個位置的陣列中新增一個新元素,那麼我們需要先在第(i-th)和第(i + 1)個位置移動所有元素,以便為新元素建立空間。示例:
1 4 2 0
是一個包含 4 個元素的陣列,現在我們要在第 2 個位置插入 3,然後我們需要進一步移動 4,2 和 0 一個位置以建立 3 的空間。
1 3 4 2 0
- 與插入元素類似,從陣列中第 i 個位置刪除元素也是無效的,因為我們需要將刪除元素前面的所有元素移動 1 個塊以填充由刪除的空閒空間元件。
這些是陣列的 3 個簡單特徵,在這裡你可能認為陣列不是一種有效的資料結構,但在實踐中,陣列的優勢可能會超出它的優勢。這在很大程度上取決於你想要服務的目的,你可能不希望像訪問它們那樣經常插入或刪除元素,在這種情況下,陣列是絕對完美的資料結構。
引入此資料結構的唯一目的是確保你不會根據優勢和劣勢的數量選擇資料結構,但你應該始終嘗試通過考慮你的問題來分析資料結構的重要性,例如,如果與插入或刪除資料值相比,你將花費大量時間訪問資料值,那麼在這種情況下,我們需要更多地利用優勢而不是劣勢。