資料結構:相互之間存在一種,或者多種特定關係的資料元素的集合
資料:能夠輸入計算機中,由計算機處理的元素
結構:資料之間的關係
例如:點狀,線性,星形,樹形
連續儲存的資料結構,通過起始陣列和偏移量來對其中每乙個元素進行訪問
優勢:隨機訪問性好,占用空間較小
時間複雜度:o(1)
線性儲存:每個元素都有乙個前驅元素和後續元素,連續儲存
插入和刪除耗費資源
也是線性儲存的資料結構,但和陣列不同的是不連續的資料結構
鍊錶中的每乙個點稱為節點,每個節點都包含兩個部分
資料域:元素
隨機訪問差,占用空間大
插入和刪除效率好,只需要修改指標
單向鍊錶和雙向鍊錶(有三個區域,中間是資料域,前驅元素位址,後續元素位址)
受限的線性表:只能從棧頂新增、刪除元素
棧頂,棧底
先進後出。棧頂元素先出 lifo last in first out
應用場合:函式呼叫,異常的傳播和丟擲
受限的線性表:只能從隊頭刪除,從隊尾新增
先進先出。隊頭元素先出 fifo first in first out
雙端佇列:同時實現佇列和堆疊的特性
樹是由節點集和連線每對節點的有向邊集組成
根、父節點,子節點、葉子節點
二叉樹:任何乙個節點的孩子數不超過兩個,最多只有兩個子節點
滿二叉樹: 所有的節點都有兩個子節點(除葉子節點以外)
完全二叉樹:編號跟滿二叉樹一致
二叉樹的遍歷:(從上到下,從左到右)
先序:根,左,右
中序:左,根,右
後序:左,右,根
通過雜湊函式(對映關係),將無限的資料對映到有限的位址集
python字典使用的是雜湊儲存
以最壞時間複雜度為準
常用的時間複雜度
o(1)< o(logn)以空間換時間的方式。
1. 順序查詢:從頭到尾
2. 折半查詢:每次查詢中心點,通過判斷大小,來進行重新獲取start和end
注意:只適合排好序的列表
掌握倆倆元素比較,i i+1
外迴圈的界限:n-1
內迴圈的界限:n-1-i
時間複雜度:最好o(n) o(n^2)
穩定:穩定
每次選擇最大或者最小元素,放到前面,排序
時間複雜:o(n^2)
穩定性:不穩定
從第二個元素開始,插入先有排好隊的隊伍中,保證每個元素插入之後還是有序的
時間複雜度:最好o(n) o(n^2)
穩定性:穩定
插入排序的公升級,加入了增量,來分組
時間複雜度:不定
穩定性:不穩定
遞迴的執行查詢中心點,將比中心點小的元素放左側,比中心點大的放右側
時間複雜度o(nlogn)
穩定性:不穩定
分久必合合久必分:將兩個有序的資料集合合併成乙個有序的資料集
時間複雜度:o(logn)
穩定性:穩定
資料結構 總結
不知不覺間,跟隨賀老師的步伐已經乙個學期了。記得大一的時候,那個時候還沒有接觸到計算機專業的知識,那個時候便聽說了賀老師,那個時候對於老師厲害還沒有什麼概念,只是覺得可能是老師比較博學,比較深層次的了解一些計算機的內容,卻從未想過,這種厲害更加深入到了學生的腦海中,甚至可能會對乙個學生,一群學生,越...
資料結構總結
本文為總結了資料結構知識點,以便複習 本文為總結了資料結構知識點,以便複習 1.緒論 2.線性表 資料結構三要素 邏輯結構 儲存結構 物理結構 資料運算。其中邏輯結構包括線性結構 線性表 棧 佇列 和非線性結構 樹 圖 集合 儲存結構主要有 順序儲存 鏈式儲存 索引儲存 雜湊儲存 又稱hash儲存 ...
資料結構總結
一 棧 先進後出 1 定義 棧是一種操作受限制的線性表,即只能從某一端插入和刪除的特殊線性表。進行插入和刪除的一端稱為棧頂,另一端稱為棧底。插入稱為進棧,刪除稱為退棧。2 具體 實現 include includeusing namespace std define n 100 int s 101 ...