归并:image.png

  1. // A是数组,n是数组大小
  2. merge_sort(A, n){
  3. merge_sort_c(A, 0, n - 1)
  4. }
  5. // 递归调用函数
  6. merge_sort_c(A, p, r) {
  7. // 递归终止条件
  8. if (p >= r) return
  9. // 取p到r之间的中间位置mid
  10. mid = (p + r) / 2
  11. // 分治递归
  12. merge_sort_c(A, p, mid)
  13. merge_sort_c(mid + 1, r)
  14. // 合并
  15. merge(A[p, ... mid], A[mid + 1, ...r])
  16. }