找到 346 篇文章 關於資料結構演算法

資料結構中的二叉樹遍歷

Arnab Chakraborty
更新於 2019-08-27 11:23:47

929 次瀏覽

在本節中,我們將瞭解用於遍歷二叉搜尋樹中存在的鍵的不同遍歷演算法。這些遍歷包括中序遍歷、先序遍歷、後序遍歷和層序遍歷。假設我們有一棵這樣的樹:中序遍歷序列將如下所示:5 8 10 15 16 20 23先序遍歷序列將如下所示:10 5 8 16 15 20 23後序遍歷序列將如下所示:8 5 15 23 20 16 10層序遍歷序列將如下所示:10, 5, 16, 8, 15, 20, 23演算法inorderTraverse(root):開始  如果根節點不存在... 閱讀更多

資料結構中的二叉樹及其屬性

Arnab Chakraborty
更新於 2019-08-27 11:04:14

4K+ 次瀏覽

在本節中,我們將瞭解二叉樹資料結構的一些重要屬性。假設我們有一棵這樣的二叉樹。一些屬性包括:第 'l' 層節點的最大數量為 $2^{l-1}$ 。這裡,層級是指從根節點到該節點的路徑上的節點數量,包括根節點本身。我們認為根節點的層級為 1。高度為 h 的二叉樹中存在的節點的最大數量為 $2^{h}-1$ 。這裡,高度是指從根節點到葉節點路徑上的最大節點數量。這裡,我們認為只有一個節點的樹的高度為... 閱讀更多

資料結構中的二叉樹表示

Arnab Chakraborty
更新於 2019-08-27 10:47:48

15K+ 次瀏覽

在這裡,我們將瞭解如何在計算機記憶體中表示二叉樹。有兩種不同的表示方法。分別是使用陣列和使用連結串列。假設我們有一棵這樣的樹:陣列表示透過使用層序方式掃描元素來儲存樹資料。因此,它按層儲存節點。如果缺少某些元素,則會為其留出空白空間。上面這棵樹的表示如下:12345678910111213141510516-81520-------23索引 1 儲存根節點,它有兩個子節點 5 和 16,它們分別位於位置 2 和 3。一些子節點是... 閱讀更多

資料結構中陣列的操作

Arnab Chakraborty
更新於 2019-08-27 10:38:25

689 次瀏覽

在這裡,我們將瞭解陣列資料結構的一些基本操作。這些操作包括:遍歷插入刪除搜尋更新遍歷是指掃描陣列中的所有元素。插入操作是在陣列的給定位置新增一些元素,刪除是從陣列中刪除元素並在刪除後更新其他元素的相應位置。搜尋是在陣列中查詢存在的某個元素,更新是在給定位置更新元素的值。讓我們來看一個 C++ 示例程式碼以更好地理解。示例 線上演示#include #include using namespace std; main(){  vector arr;  //插入元素... 閱讀更多

資料結構中的均攤時間複雜度

Arnab Chakraborty
更新於 2019-08-27 09:15:10

898 次瀏覽

均攤分析當偶爾的操作非常慢,但大多數頻繁執行的操作都更快時,使用這種分析。在資料結構中,散列表、不相交集等需要均攤分析。在散列表中,大多數情況下搜尋時間複雜度為 O(1),但有時會執行 O(n) 操作。當我們想在散列表中搜索或插入元素時,在大多數情況下,它是常數時間完成任務,但當發生衝突時,需要 O(n) 次操作來解決衝突。聚合方法聚合方法用於... 閱讀更多

矩陣乘法演算法

Arnab Chakraborty
更新於 2019-08-27 08:14:18

22K+ 次瀏覽

在本節中,我們將瞭解如何將兩個矩陣相乘。只有滿足以下條件才能執行矩陣乘法。假設有兩個矩陣 A 和 B,它們的維度分別是 A (m x n) 和 B (p x q),則當且僅當 n = p 時才能找到結果矩陣。那麼結果矩陣 C 的階數將為 (m x q)。演算法matrixMultiply(A, B):假設 A 的維度為 (m x n),B 的維度為 (p x q)開始  如果 n 與 p 不相同,則退出  否則定義 C... 閱讀更多

演算法中的步數法

Arnab Chakraborty
更新於 2019-08-27 08:02:11

9K+ 次瀏覽

步數法是分析演算法的一種方法。在這種方法中,我們計算一條指令執行的次數。由此,我們將嘗試找出演算法的複雜度。假設我們有一個執行順序搜尋的演算法。假設每條指令需要 c1、c2、…… 的時間來執行,那麼我們將嘗試找出該演算法的時間複雜度演算法執行次數成本seqSearch(arr, n, key)i := 0while i < n, do  if arr[i] = key, then    break  end ifdonereturn i1n+1n0/11c1c2c3c4c5現在,如果我們將成本相加並乘以... 閱讀更多

資料結構中佇列的操作

Arnab Chakraborty
更新於 2019-08-27 07:51:59

587 次瀏覽

佇列是一種先進先出資料結構。佇列用於圖遍歷演算法廣度優先搜尋等的不同領域。佇列有一些基本操作。在這裡,我們將瞭解佇列的這些操作,並使用佇列 ADT 看一個示例。ADT(抽象資料型別)是一種特殊型別的變數,其行為由一組值和一組操作定義。“抽象”一詞的使用是因為我們可以使用這些變數,可以執行不同的操作。但是這些操作是如何工作的,對使用者來說是完全隱藏的。ADT 由... 閱讀更多

資料結構中的尾遞迴

Arnab Chakraborty
更新於 2019-08-27 07:45:44

4K+ 次瀏覽

在這裡,我們將瞭解什麼是尾遞迴。尾遞迴基本上是將遞迴函式用作函式的最後一個語句。因此,當從遞迴呼叫返回後沒有其他操作需要執行時,這稱為尾遞迴。我們將看到一個尾遞迴的示例。示例 線上演示#include using namespace std; void printN(int n){  if(n < 0){    return;  }  cout

資料結構棧基本操作

Arnab Chakraborty
更新於 2019-08-27 07:38:16

7K+ 次瀏覽

棧是一種後進先出資料結構。棧用於評估表示式、呼叫和遞迴策略等的不同領域。棧有一些基本操作。在這裡,我們將瞭解棧的這些操作,並使用棧 ADT 看一個示例。ADT(抽象資料型別)是一種特殊型別的變數,其行為由一組值和一組操作定義。“抽象”一詞的使用是因為我們可以使用這些變數,可以執行不同的操作。但是這些操作是如何工作的,對使用者來說是完全隱藏的。ADT 由... 閱讀更多

廣告

© . All rights reserved.