記憶體分配:在記憶體中分配一段連續的空間;
特點:需要再定義時就知道分配空間的大小;
使用:用於預先就已知需要的最大儲存空間的情況;
[2] vector
記憶體分配:在記憶體中分配一段連續的空間;
實現:內部實際通過管理乙個陣列指標實現;
特點:插入的元素如果超出分配的記憶體空間,會自動劃分一段更大的記憶體空間,將資料拷貝過去後,釋放原空間;
使用:對於c++而言採用vector的情況比較多。對於需要隨機訪問元素,預先不知道需要分配的記憶體空間大小情況。但是vector在中間和頭部插入比較麻煩,插入時間複雜度是o(n);因此vector適用於只在尾部插入和刪除的情況;
[3] list
記憶體分配:隨機分配;
實現:通過乙個結構體儲存指向前乙個元素和後乙個節點的指標(雙向鍊錶);
特點:在任何地方插入都很方便,但是隨機訪問時間複雜度是o(n);
[4] stack
實現:通過乙個表實現很方便,也可以通過陣列實現;
特點:後進先出,在編譯器中得到廣泛應用,例如編譯器實現的函式堆疊;
[5] deque
實現:通過乙個陣列實現;
特點:先進先出,典型應用是多個物件需要搶占同乙個資源時;
[6] binarytree
記憶體分配:隨機分配
實現:儲存左右子節點的指標和父節點指標
特點:插入和訪問的時間複雜度都是o(logn),內部操作函式的實現很多靠遞迴來實現。每個節點兒子的個數可以擴充套件。在作業系統的編譯器中的得到廣泛應用;
[7] hashmap
特點:支援隨機訪問,可以儲存到每個資料的資訊,可以訪問指定的元素。因此應用於需要知道資料資訊的情況,比如實現乙個詞典,就可以將單詞存入乙個hash表中;
[8] heap
實現:通過陣列實現乙個完全二叉樹,稱為堆
Python資料結構效能分析
告訴大家python列表和字典操作的 大o 效能。然後我們將做一些基於時間的實驗來說明每個資料結構的花銷和使用這些資料結構的好處 方式一 deftest01 alist for i in range 1000 alist i return alist 方式二 deftest02 alist for ...
資料結構學習筆記一 資料結構基礎
做個決定,從今天開始,每天一題,把自己每天學的東西寫出來,也算是個學習筆記。駑馬十駕,功在不捨 何謂資料結構?資料結構反映資料的內部構成,即乙個資料由哪些成分資料組成,以什麼樣的形式組成,呈現什麼樣的結構。資料結構包括邏輯上的資料結構和物理上的資料結構。邏輯上的資料結構指的是成分資料之間的邏輯關係,...
資料結構筆記 基礎
一 資料的邏輯結構 1 線性結構的特點是元素之間是一對一的關係,比如鍊錶 陣列 佇列 棧等等這些都是線性結構。2 非線性結構的特點是元素之間可以是任意關係除了一對一,比如集合 無關係 樹 一對多 圖 多對多 二 資料的物理結構 1 順序儲存 元素在記憶體中連續儲存。優點是儲存空間小,缺點是只能使用相...