模板
void merge_sort(int q[], int l, int r)
{
if (l >= r) return;//递归结束条件 数组分到只剩下一个元素的时候,就结束该层递归,返回上一层
int mid = l + r >> 1;
merge_sort(q, l, mid);
merge_sort(q, mid + 1, r);
// i = 0是错误的
//因为在递归的过程中 l , r ,mid在递归过程中是在不断变化的
//初始化的时候,不能写死,写成固定的值
int k = 0, i = l, j = mid + 1;
while (i <= mid && j <= r)
if (q[i] <= q[j]) 稳定排序,需要加上等号
tmp[k ++ ] = q[i