归并排序算法动画

Merge Sort + Code Flow
速度 1.0x
临时数组 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 }
递归调用栈
调用栈为空
执行日志