题目描述
因为自己在写二分的时候习惯了左闭右开的写法,而且觉得左闭右开会更美观一些,所以打算把全部的模板都用左闭右开的方式写一遍。
C++代码
#include <iostream>
using namespace std;
int nums[100010], temp[100010];
int n;
void merge_sort(int nums[], int l, int r) {
if (l >= r-1) return;
int mid = l + (r - l) / 2;
merge_sort(nums, l, mid);
merge_sort(nums, mid, r);
int k = 0, i = l, j = mid;
while (i < mid && j < r) {
if (nums[i] < nums[j])
temp[k++] = nums[i++];
else temp[k++] = nums[j++];
}
while (i < mid) {
temp[k++] = nums[i++];
}
while (j < r) {
temp[k++] = nums[j++];
}
for (k = 0, i = l; i < r; i++, k++) {
nums[i] = temp[k];
}
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin>>nums[i];
}
merge_sort(nums, 0, n);
for (int i = 0; i < n; i++) {
cout<<nums[i]<<' ';
}
}