临时数组 temp:
当前区间
比较
写回
已排序
数组:等待开始
点击“开始归并排序”,观察分治拆分与合并过程。
1 function mergeSort(arr, l, r) {
2 if (l >= r) return;
3 const mid = Math.floor((l + r) / 2);
4 mergeSort(arr, l, mid);
5 mergeSort(arr, mid + 1, r);
6 merge(arr, l, mid, r);
7 }
8 function merge(arr,l,m,r){
9 while (i <= m && j <= r) {
10 if (arr[i] <= arr[j]) temp.push(arr[i++]);
11 else temp.push(arr[j++]);
12 }
13 copy remaining elements;
14 write temp back to arr[l...r];
15 }
调用栈为空