#include <iostream>
using namespace std;
void Merge(int a[], int left, int mid, int right) {
//暂存数据
int temp[right + 1];
for (int i = left; i <= right; i++) {
temp[i] = a[i];
}
int i = left, j = mid + 1, k = left;
while (i <= mid && j <= right) {
if (temp[i] < temp[j])
a[k++] = temp[i++];
else
a[k++] = temp[j++];
}
//剩余处理,一边结束,另一边直接加
while (i <= mid) {
a[k++] = temp[i++];
}
while (j <= right) {
a[k++] = temp[j++];
}
}
void MergeSort(int a[], int left, int right) {
//递归跳出条件
if (left >= right) return;
int mid = (left + right) / 2;
MergeSort(a, left, mid);
MergeSort(a, mid + 1, right);
Merge(a, left, mid, right);
}
int main() {
int N=10;
int a[] = {10, 9, 8, 7, 6, 5,1,0,4,5};
cout<<sizeof(a)<<endl;
MergeSort(a, 0, N-1);
for (int i = 0; i < N; i++)
cout << a[i] << " ";
cout << endl;
}