數據結構與算法之數組操作

舉例理解

我們可以這樣理解數組:一連串的數據。在不同語言環境中叫法和特性不同,在python中稱爲list, 不要求相同類型, 在c++中要求相同類型。數組根據維度劃分可分爲一位數組和多維數組, 一般而言,一維和二維數組較常見, 多維數組通常出現在動態規劃中, 在深度學習中的張量tensor本身是多維數組

常用操作 簡單舉例

  1. 遍歷

    僞代碼舉例:

    for i in range(n):
        for  j in range(m):
            array[i][j] = t
    
  2. 索引

    通過下標訪問具體數據

    僞代碼

    lst_of_random_things = [1, 3.4, 'a string', True]
    print(lst_of_random_things[0]) # 1
    
  3. 動態數組的實現

    目標:實現最後一個插入、最後一個刪除、大小、索引 插入、刪除、獲取大小、索引

    方式:假定一個數組長度爲10

    1. 數組長度增加1 再插入元素
    2. 數組長度擴大一倍 再插入元素

    分析選哪種?

    1. 如果我們每次插入一個元素的話,都要申請一個長度爲n的數組,插入n個元素的時候就是:
      f(n) = 1 + 2 + 3 + … + n 每一次循環都是n, n個數,循環n次 O(n^2) 的級別

    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

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