#include<iostream>
using namespace std;
void Merge(int c[], int d[], int l, int m, int r)
{
int i = l, j = m + 1, k = l;
while ((i <= m) && (j <= r))
if (c[i] <= c[j])
d[k++] = c[i++];
else
d[k++] = c[j++];
if (i > m)
for (int q = j; q <= r; q++)
d[k++] = c[q];
else
for (int q = i; q <= m; q++)
d[k++] = c[q];
}
void MergeSort(int a[], int l, int r)
{
int b[1000];
if (l < r)
{
int m = (l + r) / 2;
MergeSort(a, l, m);
MergeSort(a, m + 1, r);
Merge(a, b, l, m, r);
for (int x = l; x <= r; x++)
a[x] = b[x];
}
}
int main()
{
int n;
cin >> n;
int *a = new int[n];
for (int i = 0; i < n; i++)
cin >> a[i];
MergeSort(a, 0, n - 1);
for (int i = 0; i < n; i++)
cout << a[i] << " ";
delete[]a;
return 0;
}
递归实现归并排序。
MergeSort归并排序
最新推荐文章于 2024-09-22 21:28:15 发布