Java實現歸併排序
點選(此處)摺疊或開啟
-
public class MergeSort {
-
//將有二個有序數列a[first...mid]和a[mid...last]合併。
-
static void mergearray(int a[], int first, int mid, int last, int temp[]) {
-
int i = first, j = mid + 1;
-
int m = mid, n = last;
-
int k = 0;
-
-
-
while (i <= m && j <= n) {
-
if (a[i] <= a[j])
-
temp[k++] = a[i++];
-
else
-
temp[k++] = a[j++];
-
}
-
-
-
//如果從mid到last的資料已經遍歷完畢,將first到mid剩餘的資料複製至sorted
-
while (i <= m) {
-
temp[k++] = a[i++];
-
}
-
-
-
//如果從first到mid的資料已經遍歷完畢,將mid到last剩餘的資料複製至sorted
-
while (j <= n) {
-
temp[k++] = a[j++];
-
}
-
-
-
//至此,temp[]為有序的陣列
-
-
-
//更改a[]中first至last元素順序,使其排序
-
for (i = 0; i < k; i++) {
-
a[first + i] = temp[i];
-
}
-
}
-
-
-
static void mergesort(int a[], int first, int last, int temp[]) {
-
if (first < last) {
-
int mid = (first + last) / 2;
-
mergesort(a, first, mid, temp); //遞迴,將陣列切割至最小(1個元素)
-
mergesort(a, mid + 1, last, temp); //同上
-
mergearray(a, first, mid, last, temp); //再將相鄰的二個元素合併、排序,往上遞迴,直至最後合併成一個最大的有序陣列
-
}
-
}
-
-
-
public static void main(String[] args) {
-
int[] x = { 6, 2, 4, 1, 5, 9, 3 };
-
int[] sorted = new int[x.length];
-
mergesort(x, 0, x.length - 1, sorted);
-
-
-
for (int i = 0; i < sorted.length; i++) {
-
System.out.println(sorted[i]);
-
}
-
}
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1141973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- go 實現歸併排序Go排序
- php實現 歸併排序,快速排序PHP排序
- java歸併排序Java排序
- [java]歸併排序Java排序
- 利用java實現插入排序、歸併排序、快排和堆排序Java排序
- 使用 Swift 實現歸併排序Swift排序
- 歸併排序MergeSort的C實現排序
- 歸併排序的非遞迴實現排序遞迴
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- [排序] 歸併排序排序
- MergeSort,歸併排序的Python實現排序Python
- 歸併排序(java機試題)排序Java
- ForkJoin和氣泡排序組合實現的歸併排序排序
- 利用遞迴實現連結串列的排序(歸併排序)遞迴排序
- 直播系統原始碼,實現快速排序和歸併排序原始碼排序
- 歸併排序與快速排序的一個實現與理解排序
- 演算法系列(四)歸併排序及其改進(java實現)演算法排序Java
- 歸併排序排序
- 快速排序&&歸併排序排序
- Sort排序專題(7)歸併排序(MergeSort)(C++實現)排序C++
- 歸併排序與快速排序的簡明實現及對比排序
- 四、歸併排序 && 快速排序排序
- 歸併排序模板排序
- C++快速排序與歸併排序的實現(LeetCode 912)C++排序LeetCode
- Go channel 實現歸併排序中的 merge 函式Go排序函式
- 歸併排序--二路排序排序
- 排序演算法__歸併排序排序演算法
- 排序演算法:歸併排序排序演算法
- 歸併排序和基數排序排序
- 歸併排序--排序演算法排序演算法
- 排序演算法 - 歸併排序排序演算法
- 排序演算法——歸併排序排序演算法
- 歸併排序 js demo排序JS
- C# 歸併排序C#排序
- 【筆記】歸併排序筆記排序
- 歸併排序例項排序
- 全面瞭解歸併排序演算法及程式碼實現排序演算法
- 歸併排序:陣列和連結串列的多種實現排序陣列