2 条题解
-
0
老师的模板ocr后格式化产出文字版,仅供参考
void merge(int 1, int r) { //对待排序序列1~r区间进行归并排序 if (l == r) return;//如果该序列长度为1 int mid = (l + r) / 2; merge(l, mid); merge(mid + 1, r); // 递归排序前半段[1,mid]和后半段[mid+1,r] int i = 1, j = mid + 1; //初始化 for (int k = 1; k <= r; ++k) // 遍历1到r的每个位置 if (j > r || (i <= mid && a[i] <= a[j])) b[k] = a[i++]; else b[k] = a[j++], ans += mid - i + 1; for (int i = l; i <= r; ++i) a[i] = b[i]; //赋值回原数组 //主函数调用:merge(1,n);
- 1
信息
- ID
- 666
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 6
- 标签
- 递交数
- 250
- 已通过
- 71
- 上传者