java 歸併排序原理

2021-09-13 10:48:25 字數 1065 閱讀 4611

package cn.exercise;

/** * 歸併排序 o(nlogn)

* @author yang

* */

public class mergearray

bridge=new int[sorted.length];

segmentation(sorted,0,sorted.length-1);

bridge=null; }

/*** 分割函式

* @param int sorted 要排序的陣列

* @param int left 要分割的最小座標

* @param int right 要分割的最大座標

*/private void segmentation(int sorted,int left,int right) }

/*** 排序函式

* @param int sorted 要進行排序的函式

* @param int left 左部分的最小座標

* @param int center 左部分的最大座標

* @param int right 右部分的最大座標

*/private void mergesort(int sorted,int left,int center,int right) else

} // 存在這兩個迴圈因為是,總有乙個部分的某個值一直大於另乙個部分的所有值

// 上面迴圈結束後,該「某個值」就出現了,但不知道該值是左右那個部分的,

// 所以有如下迴圈,如果left>center了,就說明該「某個值」是右邊部分的。

// 由於我們不知道該「某個值」是不是它所在部分的最後乙個值,所以要進行迴圈將它和它後面的值

// 全部放入到輔助陣列中

while(right_start <= right)

while(left <= center)

}/**

* 複製回原陣列

*/private void copy(int sorted,int left,int right)

}}

歸併排序原理

和選擇排序一樣,歸併排序的效能不受輸入資料的影響,但表現比選擇排序好的多,因為始終都是o n log n 的時間複雜度。代價是需要額外的記憶體空間。歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。歸併排序是一種穩定的...

歸併排序(java)

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

Java 歸併排序

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