public class MergeSort {
public static void main(String[] args) {
int[] data = {8, 7, 7, 9, 2, 5, 1, 4, 3};
mergeSort(data, 0, data.length-1);
for(int i=0;i<data.length;i++){
System.out.print(data[i] + " ");
}
}
public static void mergeSort(int[] arr, int low, int high) {
if (low >= high) {
return;
}
int mid = (low + high) / 2;
mergeSort(arr, low, mid);
mergeSort(arr, mid + 1, high);
merge(arr, low, mid, high);
}
public static void merge(int[] arr, int low, int mid, int high) {
int[] tmp = new int[high - low + 1];
int i = low;
int j = mid + 1;
int k = 0;
while (i <= mid && j <= high) {
if (arr[i] < arr[j]) {
tmp[k++] = arr[i++];
} else {
tmp[k++] = arr[j++];
}
}
while (i <= mid) {
tmp[k++] = arr[i++];
}
while (j <= high) {
tmp[k++] = arr[j++];
}
for (int index = 0; index < tmp.length; index++) {
arr[low + index] = tmp[index];
}
}
}
【算法题】归并排序——递归
最新推荐文章于 2022-02-17 16:46:14 发布