資料結構與演算法總結1

2021-10-19 19:41:55 字數 1977 閱讀 6289

(1)陣列、字元床優缺點

優點:構建乙個陣列非常簡單;能讓我們再o(1)的時間裡根據陣列的下標查詢某個元素

缺點:構建時必須分配一段連續的空間;查詢某個元素是否存在時需要遍歷整個陣列,耗費o(n)的時間;刪除和新增某個元素時,同樣需要耗費o(n)的時間

(2)鍊錶

單鏈表:鍊錶中的每個元素實際上是乙個單獨的物件,而所有的物件都通過每個元素中的引用字段鏈結在一起

雙鏈表:與單鏈表不同的是,雙鏈表的每個結點中都含有兩個引用字段

優點:靈活地分配記憶體空間;能在o(1)時間內刪除或者新增元素

缺點:查詢元素需要o(n)時間

解題技巧:利用快慢指標(有時需要三個指標);構建乙個虛假的煉表頭。例如:兩個排序鍊錶,進行整合排序;將鍊錶的奇偶數按原定順序分離,生成前半部分為奇數,後半部分為偶數的鍊錶

(3)棧

特點:後進先出

演算法基本思想:可以用乙個單鏈表來實現;只關心上一次操作;處理完上一次的操作後,能在o(1)時間內查詢到更前一次的操作

(4)佇列

特點:先進先出

常用場景:廣度優先搜尋

(5)雙端佇列

基本實現:可以利用乙個雙鏈表;佇列的頭尾兩端能在o(1)的時間內進行資料的檢視、新增和刪除

常用場景:實現乙個長度動態變化的視窗或者連續區間

(6)樹

樹的共性:結構直觀;通過樹問題來考查遞迴演算法掌握遞迴的熟練程度

面試中常考的樹的形狀有:

普通二叉樹

平衡二叉樹

完全二叉樹

二叉搜尋樹

四叉樹多叉樹

特殊的樹:紅黑樹、自平衡二叉搜尋樹

遍歷:前序遍歷;中序遍歷;後序遍歷

優先佇列

圖字首樹

線段樹樹狀陣列

(1)優先佇列

與普通佇列的區別:保證每次去除的元素是佇列中優先順序最高的;優先級別可自定義

最常用的場景:從雜亂無章的資料中按照一定的順序(或者優先順序)篩選資料

本質:二叉堆的結構,利用乙個陣列結構來實現完全二叉樹

特性:陣列裡的第乙個元素array[0]擁有最高的優先順序

給定乙個下標i,那麼對於元素array[i]而言,父節點對應的元素下標是(i-1)/2,左側子節點對應的元素下標是2i+1,右側子節點對應的元素下標是21+2

陣列中每個元素的優先順序都必須要高於它兩側子節點

基本操作有以下兩個:

向上篩選

向下篩選

另乙個最重要的時間複雜度:優先佇列的初始化

(2)圖

最基本的知識點如下:

階、度樹、森林、環

有向圖、無向圖、完全有向圖、完全無向圖

連通圖、連通分量

圖的儲存表達方式:鄰接矩陣、鄰接鍊錶

圖的演算法多式多樣:

圖的遍歷:深度優先,廣度優先

環的檢測:有向圖、無向圖

拓撲順序

最短路演算法

連通圖相關演算法

圖的著色、旅行商問題

必須掌握的知識點:

圖的儲存和表達方式:鄰接矩陣、鄰接鍊錶

圖的遍歷:深度優先,廣度優先

二部圖的檢測、樹的檢測、環的檢測:有向圖、無向圖

拓撲排序

聯合-查詢演算法

最短路徑

(3)字首樹

也稱為字典樹

這種資料結構被廣泛地應用在字典查詢當中

什麼是字典查詢

資料結構與演算法(1)

演算法 資料結構 一 演算法 1.演算法的幾個特徵是什麼。2.演算法複雜性的定義。大o 小o分別表示的含義。3.遞迴演算法的定義 遞迴演算法的兩要素。4.分治演算法的思想,經典的分治演算法 全排列 二分搜尋 歸併排序 快速排序 線性時間選擇 最接近點對問題 5.動態規劃演算法解題框架,動態規劃演算法...

資料結構與演算法(1)

1 線性表 2 棧 3 佇列 4 字串 補充 遞迴 1 樹與二叉樹 2 圖 1 查詢 2 排序 編寫相關演算法 資料結構 入門問題 1.為什麼學習資料結構?1 高階程式設計的理論指導 2 提公升編碼能力 3 面試中經常被問及,看發展潛力 2.有哪些資料結構?2.11線性結構 線性表 棧 佇列 陣列 ...

資料結構與演算法 1

cpu 處理器central process unit gpu 圖形處理器graphics processing unit,又稱顯示核心 視覺處理器 顯示晶元或繪圖晶元,是一種專門在個人電腦 工作站 遊戲機和一些移動裝置 如平板電腦 智慧型手機等 上執行繪圖運算工作的微處理器。其用途是將計算機系統所...