舉例理解
我們可以這樣理解數組:一連串的數據。在不同語言環境中叫法和特性不同,在python中稱爲list, 不要求相同類型, 在c++中要求相同類型。數組根據維度劃分可分爲一位數組和多維數組, 一般而言,一維和二維數組較常見, 多維數組通常出現在動態規劃中, 在深度學習中的張量tensor本身是多維數組
常用操作 簡單舉例
-
遍歷
僞代碼舉例:
for i in range(n): for j in range(m): array[i][j] = t
-
索引
通過下標訪問具體數據
僞代碼
lst_of_random_things = [1, 3.4, 'a string', True] print(lst_of_random_things[0]) # 1
-
動態數組的實現
目標:實現最後一個插入、最後一個刪除、大小、索引 插入、刪除、獲取大小、索引
方式:假定一個數組長度爲10
- 數組長度增加1 再插入元素
- 數組長度擴大一倍 再插入元素
分析選哪種?
-
如果我們每次插入一個元素的話,都要申請一個長度爲n的數組,插入n個元素的時候就是:
f(n) = 1 + 2 + 3 + … + n 每一次循環都是n, n個數,循環n次 O(n^2) 的級別 -
如果每一次都擴展一倍,假設最後一次數組長度爲n, 那麼上一次是 n / 2, 再上一次是 n / 4
f(n) = n + n/2 + n/4 + n/8 + … <= 2n 最終是 O(n) 的級別
這就是常說的用空間換時間的方式
備用屬性或函數
push_back pop_back index size
如何實現?
push_back : 檢查size是否滿, 如果滿, allsize倍增, a 倍增, 然後插入一個元素
pop_back : 刪除最後元素, size - 1
index : 返回 a 的相應位置元素
size : 返回 size