歸併排序 Java

2021-09-25 05:12:17 字數 1334 閱讀 8212

方法一:

/**

* 歸併排序

*/public class mergesort ;

// 排序 - 分治演算法

sort(arr, 0, arr.length - 1);

for (int num : arr)

}/**

* 分治演算法

* left 表示左側索引,right 是右側索引,用於要排序的arr的子陣列

*/public static void sort(int arr, int left, int right)

}/**

* 合併arr 的兩個子陣列。

* 第乙個子陣列是arr [left ... m]

* 第二個子陣列是arr [m + 1 ... right]

*/public static void merge(int arr, int left, int middle, int right) else

p ++;

}//如果有的話,複製 leftarr 的剩餘元素

while (m < left_size)

//如果有的話,複製 rightarr 的剩餘元素

while (n < right_size)

}}

方法二:

public class testmergesort ;

int left = 0;

int right = originalarr.length - 1;

mergesort(originalarr, left, right);

for (int i : originalarr)

}public static void mergesort(int arr, int left, int right)

}public static void merge(int arr, int left, int middle, int right)

for (i = middle; i <= right; i ++)

int m = 0, n = 0, k = left;

while (m < left_size && n < right_size) else

}while (m < left_size)

while (n < right_size)

}}

總結:

方法一和方法二都是一樣的,只是陣列的索引有稍微差別,大家可以都看一下,理解一下兩種方法中 index 的區別。

歸併排序(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 歸併排序

歸併排序演算法思想 將乙個無序陣列分成兩部分,然後各個部分繼續分解,遞迴呼叫,直至子陣列天然有序 只有乙個數就是天然有序 然後自底向上,將每個子陣列一一合併,然後最後就合併成乙個有序的陣列。遞迴方法,分解無序陣列 遞迴呼叫該方法進行陣列的排序 param arr1 return public sta...