#include <iostream>
using namespace std;
void Merge (
int *A,
int low,
int mid,
int high,
int *B)
{
int i, j, k;
i = low;
j = mid +
1;
k =
0;
while (i <= mid && j <= high)
{
if (A[i] <= A[j])
{
B[k++] = A[i++];
}
else
{
B[k++] = A[j++];
}
}
while (i <= mid)
B[k++] = A[i++];
while (j <= high)
B[k++] = A[j++];
for (i =
0; i < k; i++)
A[low + i] = B[i];
}
void MergeSort (
int *A,
int low,
int high,
int *B)
{
if (low < high)
{
int mid = (low + high) /
2;
MergeSort (A, low, mid, B);
MergeSort (A, mid +
1, high, B);
Merge (A, low, mid, high, B);
}
}
int main()
{
cout <<
"要给几个数字排序:";
int num;
cin >> num;
int * a =
new int [num];
int * p =
new int [num];
for (
int i =
0; i < num; i++)
{
cin >> a[i];
}
MergeSort (a,
0, num -
1, p);
for (
int i =
0; i < num; i++)
{
cout << a[i] <<
' ';
}
cout << endl;
delete []a;
delete []p;
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-37627.html