代码:
#include <iostream>
using namespace std;
void Merge(int a[], int b[], int start,int end) {
if (start == end) {
return;
}
int mid = (start + end) / 2;
Merge(a, b, start, mid);
Merge(a, b, mid + 1, end);
int a1 = start; //左边数组索引
int a2 = mid + 1; //右边数组索引
int e = start; //b数组索引
while (1) {
if (a1 > mid) {
for (; a2 <= end; a2++) {
b[e++] = a[a2];
}
break;
}
if (a2 > end) {
for (; a1 <= mid; a1++) {
b[e++] = a[a1];
}
break;
}
if (a[a1] <= a[a2]) {
b[e++] = a[a1++];
}
else
{
b[e++] = a[a2++];
}
}
for (int n = start; n <= end; n++) {
a[n] = b[n];
}
}
int main() {
int n;
cout << "input the length of array" << endl;
cin >> n;
int *a = new int[n];
int *b = new int[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
Merge(a, b, 0, n - 1);
for (int i = 0; i < n; i++) {
cout << a[i] << endl;
}
return 0;
}
算法分析