幾種合併查詢演算法

2021-05-24 13:53:19 字數 481 閱讀 8230

問題:

實際中需要知道拓撲圖中的2點是否連通,比如電路板、地圖中不同的城市等等,這種問題可以轉化為合併查詢問題,相應的求解可以用合併查詢演算法。

基本思想是轉化為長度為n的陣列和已知m對連通對,其值表示了兩個點是否連通。

合併查詢演算法 (union-find)可以有以下幾種:

1、快速查詢演算法

mark連通時遍歷整個陣列,使得連通指向最新的節點

2、快速合併演算法

不需要遍歷整個陣列,只遍歷已連通的子串,然後合併新加入連通節點對應的根節點

3、帶權的快速合併演算法

為避免合併的最壞情況,利用額外的陣列表示連通子串長度,保證合併時短串合併到長串。查詢代價為logn

4、路徑壓縮的帶權快速合併演算法

為減少查詢代價,利用路徑壓縮,使得查詢最小(1或者2),但是實現代價複雜

5、等分的帶權快速合併演算法

折中的路徑壓縮,合併時向上跳乙個節點,實現簡單,查詢代價也大為減少。

幾種基本查詢演算法

1.2 折半查詢 1.3 分塊查詢 索引查詢 2 b樹和b 樹 的方法 2.2 b 樹的基本概念 3 雜湊表 4 串5 補充 思想 從線性表的一端開始,與關鍵字逐個比較。若已經比對到表的另一端還沒有匹配成功,則返回查詢失敗資訊 typedef struct sstable intsearch seq...

幾種查詢演算法的比較

1.堆的意義在於最快的找到最大最小值,在堆中插入乙個值,取走最大值或最小值重新構建堆結構,其時間複雜度為o log n 而其它方法至少為 o n 堆在實際中用途不在於排序,堆的應用 a.在於排程演算法中,比如優先順序排程,每次取優先順序最高的.b.可以採用堆構造優先順序佇列,優化dijstra 演算...

Java 中幾種查詢演算法

順序查詢 說明 順序查詢適合於儲存結構為順序儲存或鏈結儲存的線性表。int sequelsearch elemtype s,keytype key,int n 在s 0 s n 1 中順序查詢關鍵字為key的記錄 查詢成功時返回該記錄的下標序號 失敗時返回 1 二分查詢 1 遞迴方法實現 int b...