大學課程資料結構與演算法複習

2021-10-24 07:16:21 字數 2232 閱讀 1984

資料結構之陣列和鍊錶的區別

演算法的時間與空間複雜度

資料結構與演算法是計算機專業必修的一門課

在工作中,免不了要面對一些複雜的業務邏輯,可能有多種方法實現,每種方式的執行效率也可能都不一樣,好的資料結構與演算法能提公升效率,具體體現在時間和空間上

比如,現在有一萬個人,要找出姓名叫張三的人,最簡單的方式是從頭到尾遍歷,如果張三是最後一位,則要遍歷10000次

如果按字母首字母去查詢的話,則首先在10000個人當中找到首字母為z的人,假如是100個人,那最快的情況也只用遍歷100次

這個就是資料結構與演算法最簡單的例子

為什麼要學資料結構與演算法?

學習路線圖:

陣列特點:

鍊錶特點:

棧其實是一種受限的線性資料結構,遵循先進後出

術語:棧結構的方法:

方法含義

push()

入棧操作

pop()

出棧操作

gettopelement()

返回棧頂的元素,但不會移除棧頂的元素

isempty()

檢視棧是否為空

size()

返回棧內元素的個數

tostring()

以字串的形式展示棧內的所有元素

典型的棧的應用場景:

}佇列也是一種受限的線性資料結構,遵循先進先出的原則

優先順序佇列:不遵循先進先出,優先順序高的元素,在插入佇列的時候可能會排在前面

單向鍊錶

雙向鍊錶

雜湊表的由來:

對於陣列,如果已知下標i,那麼查詢乙個元素就很快。但是如果不知道下標i,只知道元素的值,那麼需要從頭開始遍歷陣列,直到找到這個元素位置

為了解決陣列的不足,引入了雜湊表,雜湊表在很多程式語言中都有實現

將乙個值經過雜湊函式計算後,再取模,會得到乙個下標,好的雜湊函式會使雜湊衝突的機率很小

雜湊衝突的解決方法:

樹結構是平日裡我們常見的一種資料結構,例如家族族譜、公司管理層級結構圖等,這樣的資料結構的存在一定有一定的道理

樹是一種非線性資料結構

術語名含義

結點樹中的資料元素

結點的度

結點擁有的子樹個數

葉子結點

度為0的結點

分支結點

度大於0的結點

父節點衍生出其它結點的結點為這些結點的父結點

子結點被某個結點衍生出來的結點為該結點的子結點

兄弟結點

具有同乙個父節點的所有結點為兄弟結點

結點的層次

設定根結點所在層次為1,其它結點層次為其父節點層次+1

樹的深度

樹的所有結點中的最大層次為該樹的深度

路徑從某個結點沿著樹的層級關係到達另乙個結點之間的路線

路徑長度

路徑上的結點個數 -1

二叉樹的定義:樹結構中每個結點最多只有兩個子結點,即任何乙個結點的度都小於等於2

完全二叉樹要滿足以下兩個條件:

第i層結點個數最大為2^(i-1)個,i>=1

深度為k的二叉樹總結點個數最大為2^k-1,k>=1

資料結構與演算法課程設計

題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...

演算法與資料結構複習 鍊錶

鍊錶定義 typedef struct listnode題 如何判斷鍊錶有環?定義兩個節點,乙個節點一次移動乙個節點,乙個節點一次移動兩個節點,如果兩者相遇則說明有環 bool judgecircle listnode node return false return false 題 請問如何判斷兩...

複習資料結構及演算法

複習資料結構與演算法的一些知識收藏 十大經典排序演算法 時間和空間複雜度 演算法 algorithm 是指用來運算元據 解決程式問題的一組方法。對於同乙個問題,使用不同的演算法,也許最終得到的結果是一樣的,但在過程中消耗的資源和時間卻會有很大的區別。那麼我們應該如何去衡量不同演算法之間的優劣呢?主要...