Hi 我是哈缺氧。
归并排序没有快速排序难, 重在对合并的理解。
private static void fun(int[] arr, int la, int ra) {
if (la < ra) {
fun(arr, la, (la + ra) >> 1);
fun(arr, ((la + ra) >> 1) + 1, ra);
int[] clone = arr.clone();
int p = la;
int left = la;
int mid = (la + ra) >> 1;
int right = ((la + ra) >> 1) + 1;
while (left <= mid && right <= ra) {
if(clone[left] > clone[right]){
arr[p] = clone[right];
p++;
right++;
}else{
arr[p] = clone[left];
p++;
left++;
}
}
while(left <= mid){
arr[p] = clone[left];
p++;
left++;
}
while(right <= ra){
arr[p] = clone[right];
p++;
right++;
}
}
}