4K+ 次檢視
圖是一種非線性資料結構。它使用節點表示資料,使用邊表示它們之間的關係。圖G有兩個部分:頂點和邊。頂點用集合V表示,邊用集合E表示。所以圖的表示法是G(V, E)。讓我們看一個例子來了解一下。在這個圖中,有五個頂點和五條邊。這些邊是有方向的。例如,如果我們選擇連線頂點B和D的邊,則源頂點是B,目標頂點是D。所以我們可以從B移動到D,但不能從… 閱讀更多
6K+ 次檢視
在這裡,我們將看到一些排序方法。有200多種排序技術。我們將看到其中幾種。一些排序技術是基於比較的排序,一些是非基於比較的排序技術。基於比較的排序技術包括氣泡排序、選擇排序、插入排序、歸併排序、快速排序、堆排序等。這些技術被認為是基於比較的排序,因為在這些技術中,值被比較,並放置在不同階段的排序位置。在這裡,我們將看到這些技術的 時間複雜度。分析型別氣泡排序選擇排序插入排序歸併排序快速排序堆排序最佳情況O(n2)O(n2)O(n)O(log n)O(log n)O(logn)平均情況O(n2)O(n2)O(n2)O(log n)O(log n)O(log n)最壞情況O(n2)O(n2)O(n2)O(log n)O(n2)O(log n)一些排序演算法是… 閱讀更多
5K+ 次檢視
在不同的情況下,我們執行不同的搜尋方案來查詢一些鍵。在本節中,我們將看到兩種搜尋技術,順序搜尋和二分搜尋,之間的基本區別。順序搜尋二分搜尋時間複雜度為O(n)時間複雜度為O(log n)在常數時間內找到位於第一個位置的鍵在常數時間內找到位於中心位置的鍵容器中元素的順序不會影響。容器中的元素必須已排序陣列和連結串列可用於實現此方法它不能直接在連結串列中實現。我們需要改變基本規則… 閱讀更多
22K+ 次檢視
抽象資料型別是一種特殊型別的 資料型別,其行為由一組值和一組操作定義。“抽象”關鍵字的使用是因為我們可以使用這些資料型別,可以執行不同的操作。但是這些操作是如何工作的,對使用者來說是完全隱藏的。ADT是由原始資料型別構成的,但是操作邏輯是隱藏的。在這裡,我們將看到棧ADT。這些是棧ADT的一些操作或函式。isFull(),用於檢查棧是否已滿isEmpty(),用於檢查棧是否為空… 閱讀更多
2K+ 次檢視
在這裡,我們將看到一個關於凸包的例子。假設我們有一組點。我們必須透過採用較少的點數來建立一個多邊形,該多邊形將覆蓋所有給定的點。在本節中,我們將看到Jarvis March演算法來獲得凸包。Jarvis March演算法用於從給定的一組資料點中檢測凸包的角點。從資料集的最左點開始,我們透過逆時針旋轉將點保持在凸包中。從當前點,我們可以透過檢查… 閱讀更多
1K+ 次檢視
一組整數按排序順序給出,另一個數組freq表示頻率計數。我們的任務是使用這些資料建立一個二叉搜尋樹,以找到所有搜尋的最小成本。建立一個輔助陣列cost[n, n]來求解和儲存子問題的解。成本矩陣將儲存資料,以便自下而上地解決問題。輸入- 節點作為鍵值和頻率。鍵 = {10, 12, 20} 頻率 = {34, 8, 50}輸出- 最小成本為142。這些是從給定值中可能生成的BST。對於情況1,成本… 閱讀更多
103 次檢視
負二項分佈是一種隨機數分佈,它將根據負二項離散分佈產生整數。這被稱為帕斯卡分佈,因此負二項分佈可以寫成$$P\lgroup i\arrowvert k,p\rgroup=\lgroup \frac{k+i-1}{i}\rgroup p^{k}\lgroup 1-p\rgroup^{i}$$示例 線上演示#include <iostream>#include <random>using namespace std; int main(){ const int nrolls = 10000; // 擲骰子的次數 const int nstars = 100; // 要分配的最大星數 default_random_engine generator; negative_binomial_distribution distribution(3,0.5); int p[10]={}; for (int i=0; i<
309 次檢視
幾何分佈是對於n = 0, 1, 2, …的離散機率分佈,具有機率密度函式$$P\lgroup n\rgroup=p\lgroup1-p\rgroup^{n}$$分佈函式為−$$D\lgroup n\rgroup=\displaystyle\sum\limits_{i=0}^n P\lgroup i \rgroup=1-q^{n+1}$$示例 線上演示#include <iostream>#include <random>using namespace std; int main(){ const int nrolls = 10000; // 擲骰子的次數 const int nstars = 100; // 要分配的最大星數 default_random_engine generator; geometric_distribution distribution(0.3); int p[10]={}; for (int i=0; i<
335 次檢視
二項分佈是獲得N次伯努利試驗中n次成功的離散機率分佈Pp(n | N)(具有由x = 0和x = 1標記的兩個可能結果。x = 1是成功,x = 0是失敗。成功發生的機率為p,失敗發生的機率為q,q = 1 – p.) 因此,二項分佈可以寫成$$P_{p}\lgroup n\:\arrowvert\ N\rgroup=\left(\begin{array}{c}N\ n\end{array}\right) p^{n}\lgroup1-p\rgroup^{N-n}$$示例 線上演示#include <iostream>#include <random>using namespace std; int main(){ const int nrolls = 10000; // 擲骰子的次數 const int nstars = 100; // … 閱讀更多
16K+ 次檢視
生成樹是無向圖的子集,它具有透過最小數量的邊連線的所有頂點。如果圖中的所有頂點都已連線,則至少存在一個生成樹。在一個圖中,可能存在多個生成樹。最小生成樹最小生成樹 (MST) 是連線加權無向圖的所有頂點的邊的子集,其總邊權重最小。為了匯出MST,可以使用Prim演算法或Kruskal演算法。因此,我們將在本章中討論Prim演算法。當我們… 閱讀更多