JAVA 歸併排序

2021-07-08 17:07:21 字數 981 閱讀 2422

歸併排序演算法思想:將乙個無序陣列分成兩部分,然後各個部分繼續分解,遞迴呼叫,直至子陣列天然有序(只有乙個數就是天然有序),然後自底向上,將每個子陣列一一合併,然後最後就合併成乙個有序的陣列。

遞迴方法,分解無序陣列:

/**

* 遞迴呼叫該方法進行陣列的排序

* *@param arr1

*@return

*/public

static

void

mergesort(int arr1)

// 排序的方法

public

static

void

sort(int data, int left, int right)

int center = (left + right) / 2;

sort(data, left, center);

sort(data, center + 1, right);

// 合併

merge(data, left, center, right);

print(data);

}

將兩個有序陣列合併成乙個有序陣列的方法實現:

/**

* 將兩個有序陣列和平為乙個有序陣列的方法

* *@param a

*@param b

*@param c

*@return

*/public

static

void

merge(int data, int left, int center, int right) else

}// 當乙個陣列全部新增之後將另乙個陣列的剩餘部分直接加到後面

while (mid <= right)

while (left <= center)

while (tmp <= right)

}

歸併排序(java)

基本排序 歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。public class mergingsort return data 將陣列中left center,center 1 r...

Java 歸併排序

歸併排序 英語 merge sort 或mergesort 是建立在歸併操作上的一種有效的 排序演算法 時間複雜度為 o n log n 穩定排序。1945年由 約翰 馮 諾伊曼 首次提出。該演算法是採用 分治法 divide and conquer 的乙個非常典型的應用,且各層分治遞迴可以同時進行...

歸併排序 java

今天研究了一下歸併排序,原理是這樣的 將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列 綜合並運用遞迴和歸併的方法 是這樣的 歸併排序 package algorithm public class test pu...