目录
《算法导论》第二章归并排序
伪代码:
MERGE(A, p, q, r)
n1 = q-p+1
n2 = r-q
for i = 1 to n1
L[i] = A[p+i-1]
for j = 1 to n2
R[j] = A[q+j]
L[n1+1] = ∞
R{n1+1} = ∞
i = 1
j = 1
for k = p to r
if L[i] <= R[j]
A[k] = L[i]
i = i+1
else
A[k] = R[j]
j = j+1
MERGE-SORT(A, p, r)
if p<r
q = (p+r)/2
MERGE-SORT(A, p, q)
MERGE-SORT(A, q+1, r)
MERGE(A, p, q, r)
C++代码:
#include <bits/stdc++.h>
using namespace std;
/*
* 归并排序
* 使用递归方式