【简答题】
补充完成归并排序 void Merge(int r[ ], int r1[ ], int s, int m, int t) //合并子序列 { int i = s, j = m + 1, k = s; while (i <= m && j <= t) { if (r[i] <= r[j]) //取r[i]和r[j]中较小者放入r1[k] r1[k++] = r[____(1)______]; else r1[k++] = r[____(2)______]; } while (i <= m) { //若第一个子序列没处理完,则进行收尾处理 r1[k++] = ____(3)______; } while (j <= t) { //若第二个子序列没处理完,则进行收尾处理 r1[k++] = ____(4)______; } } void MergeSort(int r[ ], int s, int t) { int m; int r1[1000] = {0}; if (s == t) return; //递归的边界条件 else { ____(5)______ = (s + t)/2; //划分 MergeSort(r, s, m); //求解子问题1,归并排序前半个子序列 MergeSort(r, m+1, t); //求解子问题2,归并排序后半个子序列 Merge(r, r1, s, m, t); //合并解,合并相邻有序子序列 for (int i = s; i <= t; i++) r[i] = __(6)______; } }
手机使用
分享
复制链接
新浪微博
分享QQ
微信扫一扫
微信内点击右上角“…”即可分享
反馈
收藏
举报
参考答案:
参考解析: