合成排序法 (Merge Sort)

未排序
比較中
合併中
已排序
慢速 快速 (0.6s)
目前段: -
比較索引: -
狀態: 準備中
點擊開始演示
function mergeSort(l, r) {
  if (l >= r) return;
  const m = Math.floor((l + r) / 2);
  mergeSort(l, m);
  mergeSort(m + 1, r);
  merge(l, m, r);
}
function merge(l, m, r) {
  let i = l, j = m + 1, k = l;
  while (i <= m && j <= r) {
    if (arr[i] <= arr[j]) arr[k++] = arr[i++];
    else arr[k++] = arr[j++];
  }
  while (i <= m) arr[k++] = arr[i++];
  while (j <= r) arr[k++] = arr[j++];
}