归并排序模板
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);//先递归处理左右 int l = L; int r = mid + 1; int n = 0; while (l <= mid && r <= R) { if (q[l] <= q[r]) Temp[n++] = q[l++]; else Temp[n++] = q[r++]; } while (l <= mid)Temp[n++] = q[l++]; while (r <= R)Temp[n++] = q[r++]; for (int i = L,j = 0; L <= R;L++,j++)//数据导入 q[L] = Temp[j]; }
注意归并排序需要额外一个数组Temp来暂时存储结果
注意归并的for循环还有while里不要多写++,否则会出错误的
本文作者:凪风sama
本文链接:https://www.cnblogs.com/CrescentWind/p/17347710.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步