归并排序算法
package com.example.demo02;
import java.util.Arrays;
public class MergeSort {
public static void process(int[] arr, int L, int R) {
if (L == R) {
return;
}
int mid = L + ((R - L) >> 1);
process(arr, L, mid);
process(arr, mid + 1, R);
merge(arr,L,R,mid);
}
public static void merge(int[] arr, int L, int R, int mid) {
int[] tmp = new int[R - L + 1];
int i = 0;
int p1 = L;
int p2 = mid + 1;
while (p1 <= mid && p2 <= R) {
tmp[i++] = arr[p1] <= arr[p2] ? arr[p1++] : arr[p2++];
}
while (p1<=mid){
tmp[i++]=arr[p1++];
}
while (p2<=R){
tmp[i++]=arr[p2++];
}
for (int i1 = 0; i1 < tmp.length; i1++) {
arr[L+i1]=tmp[i1];
}
}
public static void main(String[] args) {
int[] arr={5,2,6,3,8,4,6,4};
process(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
}