資料結構及演算法知識(二)

2021-08-04 03:23:28 字數 1314 閱讀 4726

總結:

①線性結構:線性表、棧、佇列、串、陣列、廣義表

②非線性結構:數(二叉樹)

③哈弗曼樹:帶權路徑長度最小的二叉樹。帶權路徑長度wpl=所有葉子節點的權值*路徑長度;

一、並查集

並查集支援查詢乙個元素所屬的集合以及合併兩個元素各自所屬的集合等運算。

在這種資料型別中,n個不同的元素被分為若干組,每組是乙個集合,這種集合叫做分離集合。

並查集的資料結構實現方法:陣列、鍊錶、數等。

用途:並查集求解等價問題。

二、拓撲排序

在乙個有向圖中找乙個拓撲序列的過程稱為拓撲排序。

拓撲排序方法如下:

①從有向圖中選擇乙個沒有前驅節點(入度為0)的頂點並且輸出它。

②從圖中刪去該頂點,並且刪去從該頂點出發的全部有向邊。

③重複①②,直到圖中不再存在沒有前驅的頂點為止。

三、遞迴

總結:主要尋找遞迴出口和遞迴體。

定型用例:

1.定義遞迴

①階乘function fn(n)else

}②fibonacci數列

function fib(n)else

}②資料結構遞迴

如:求乙個不帶頭節點的單鏈表l上的所有data域(假設為int型)之和。

function node(x)

function constructl(arr)else

}function sum(l)else

}③問題的求解方法遞迴

hanoi問題:設有3個分別命名為x,y,z的塔座,在塔座x上有n個直徑各不相同,從小到大依次編號為1,2,...,n的碟片,現要求將x塔座上的n個碟片移到塔座z上並仍按同樣順序疊放,碟片移動時必須遵守以下規則:

每次只能移動乙個碟片;

碟片可以插在x,y,x中任意塔座;

任何時候都不能將乙個較大的碟片放在較小的碟片上。

思路:

1.利用串的基本運算寫出對串求逆的遞迴演算法。

思路:對於s="s1s2...sn"的串,假設"s2s3...sn"已經求出其逆串,再將s1連線到最後即得到s的逆串。

2.求順序表中最大元素。

思路:將線性表分解成和兩個子表,分別求得子表中的最大元素ai和aj,比較ai和aj求最大值;再將每個子表分成兩個子表進行上述操作...直到表中只有乙個元素為止(當表中只有乙個元素時,該元素便是該錶的最大元素)。

資料結構及演算法知識(四)

排序 內排序 在排序過程中,若整個表都是放在記憶體中處理,排序是不涉及內外存資料的交換,則稱之為內排序。外排序 若排序過程中要進行內外存資料的交換,則稱之為外排序。內排序適用於元素個數不是很多的小表,外排序適用於元素個數很多,不能一次將全部元素放入記憶體的大表。內排序有 插入排序 交換排序 選擇排序...

資料結構及演算法知識(一)

一 有序表的歸併演算法 思想 在不破壞原有表的情況下 將兩個有序表合併成乙個有序表可以採用二路歸併演算法。分別掃瞄la和lb兩個有序表,當兩個有序表都沒有掃瞄完時迴圈 比較la lb的當前元素,將其中較小的元素放入lc中,再從較小元素所在的有序表中取出下乙個元素。重複這一過程直到la或lb比較完畢,...

資料結構與演算法知識總結(二)

下面對常見的資料結構和常用演算法知識進行總結。我們知道資料結構研究物件可以分為邏輯資料結構和儲存 物理 資料結構兩種。但對資料結構進行分類,資料結構可分為很多種,如按照資料的邏輯結構對其進行簡單的分類,可以分為線性結構和非線性結構,而且還可以對這兩種結構進行細分,那就是平時所說的常見的人八大資料結構...