确定边界 两数之和的一半为分割点, 一分为二 把值放到temp,再放回arr原数组
static void merge_sort(int[] arr, int l, int r) {
//确定边界
if (l >= r) return;
// 两数之和的一半为分割点, 一分为二
int mid = l+r >> 1;
merge_sort(arr, l, mid);
merge_sort(arr, mid + 1, r);
//把值放到temp,然后在放回arr数组
int k = 0, i = l, j = mid + 1;
while (i<= mid && j <= r) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];//把最小值赋值给temp数组
} else {
temp[k++] = arr[j++];//把最小值赋值给temp数组
}
}
//如果i或者j一个到了末尾,另一个没到,需要把剩余的全给temp
while (i <= mid