アルゴリズムのソートアルゴリズムのソート:集計
1142 ワード
//
public static void sort4(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
sortProcess(arr, 0, arr.length - 1);
}
public static void sortProcess(int[] arr, int l, int r) {
if (l == r) {
return;
}
int mid = (l + r) / 2;
sortProcess(arr, l, mid);
sortProcess(arr, mid + 1, r);
merge(arr, l, mid, r);
}
public static void merge(int[] arr, int l, int mid, int r) {
int arr2[] = new int[r - l + 1];
int i = 0;
int p1 = l;
int p2 = mid + 1;
while (p1 <= mid && p2 <= r) {
if (arr[p1] <= arr[p2]) {
arr2[i++] = arr[p1++];
} else {
arr2[i++] = arr[p2++];
}
}
if (p1 > mid) {
while (p2 <= r) {
arr2[i++] = arr[p2++];
}
} else if (p2 > r) {
while (p1 <= mid) {
arr2[i++] = arr[p1++];
}
}
for (i = 0; i < arr2.length; i++) {
arr[l + i] = arr2[i];
}
}