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

資料結構中的二叉樹遍歷

Arnab Chakraborty
更新於 2019年8月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演算法中序遍歷(根):開始 如果根節點不是……閱讀更多

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

Arnab Chakraborty
更新於 2019年8月27日 11:04:14

4K+ 次檢視

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

資料結構中的二叉樹表示

Arnab Chakraborty
更新於 2019年8月27日 10:47:48

15K+ 次檢視

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

資料結構中陣列的操作

Arnab Chakraborty
更新於 2019年8月27日 10:38:25

689 次檢視

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

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

Arnab Chakraborty
更新於 2019年8月27日 09:15:10

897 次檢視

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

矩陣乘法演算法

Arnab Chakraborty
更新於 2019年8月27日 08:14:18

22K+ 次檢視

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

演算法中的步數計數法

Arnab Chakraborty
更新於 2019年8月27日 08:02:11

9K+ 次檢視

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

資料結構中佇列的操作

Arnab Chakraborty
更新於 2019年8月27日 07:51:59

587 次檢視

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

資料結構中的尾遞迴

Arnab Chakraborty
更新於 2019年8月27日 07:45:44

4K+ 次檢視

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

資料結構棧基本操作

Arnab Chakraborty
更新於 2019年8月27日 07:38:16

7K+ 次檢視

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

廣告
© . All rights reserved.