单线程归并排序算法
在排序算法中,归并排序(Merge Sort)采用了经典的分治(divide-and-conquer)策略,并且具有并行的特征。如下是归并排序算法串行执行的Java代码:
public class MergeSort {
/**
* 将给定数组排序(单线程,归并排序)
* @param arr int整型一维数组 待排序的数组
* @return int整型一维数组 排序后的数组
*/
public static int[] sort(final int[] arr) {
if (arr == null) {
return null;
}
return sort(arr, 0, arr.length - 1);
}
private static int[] sort(final int[] arr, int start, int end) {
if (start > end) {
return new int[]{
};
}
if (start == end) {
return new int[]{
arr[start]};
}
int mid = (end - start) / 2 + start;
int[] left = sort(arr, start, mid);
int[] right = sort(arr, mid + 1, end);
return merge(left, right);
}
private static int[] merge(int[] left, int[] right) {
int lenL = left.length;
int lenR = right.length;
int len = lenL + lenR;
int[] res = new int[len];
int i = 0;
int j = 0;
int k = 0;
while (i < lenL && j < lenR) {
if (left