歸併演算法理解

2021-07-13 16:58:59 字數 1203 閱讀 8287

歸併排序原理圖

歸併排序**

public class mergesort ;  

system.out.println("排序前的陣列:");

print(data);

mergesort(data);

system.out.println("排序後的陣列:");

print(data);

} public static void mergesort(int data)

public static void sort(int data, int left, int right)

/**

* 將兩個陣列進行歸併,歸併前面2個陣列已有序,歸併後依然有序

* * @param data

* 陣列物件

* @param left

* 左陣列的第乙個元素的索引

* @param center

* 左陣列的最後乙個元素的索引,center+1是右陣列第乙個元素的索引

* @param right

* 右陣列最後乙個元素的索引

*/

public static void merge(int data, int left, int center, int right) else

} // 剩餘部分依次放入臨時陣列(實際上兩個while只會執行其中乙個)

while (mid <= right)

while (left <= center)

// 將臨時陣列中的內容拷貝回原陣列中

// (原left-right範圍的內容被複製回原陣列)

while (tmp <= right)

} public static void print(int data)

system.out.println();

} }

執行結果

A 演算法理解

廣度優先 bfs 和深度優先 dfs 搜尋 深度優先搜尋,用俗話說就是不見棺材不回頭。演算法會朝乙個方向進發,直到遇到邊界或者障礙物,才回溯。一般在實現的時候,我們採用遞迴的方式來進行,也可以採用模擬壓棧的方式來實現。如下圖,s代表起點,e代表終點。我們如果按照右 下 左 上這樣的擴充套件順序的話,...

dijkstra 演算法理解

求有向圖中乙個源點到其他頂點的最短距離 自己的理解 剛開始的時候相當於有三個集合 v 頂點集合 s 已求得的最短距離頂點集合,假設求a到其他頂點的最短距離 s 剩餘頂點集合 d 儲存的是最短距離值 求一維陣列中的最小值的下標,這個陣列不包含已經求得的頂點 找出最小值下標後,放入到s中,然後求剩餘頂點...

KM演算法理解

二分圖帶權匹配與最佳匹配 什麼是二分圖的帶權匹配?二分圖的帶權匹配就是求出乙個匹配集合,使得集合中邊的權值之和最大或最小。而二分圖的最佳匹配則一定為完備匹配,在此基礎上,才要求匹配的邊權值之和最大或最小。二分圖的帶權匹配與最佳匹配不等價,也不互相包含。我們可以使用km演算法實現求二分圖的最佳匹配。方...