/**归并**/
#define N 10
#include<iostream>
#include<cstring>
using namespace std;
void Merge(int *a, int *b, int i, int m, int n)
{
int k = i;
int j = m + 1;
for (; i <= m&&j <= n; k++)
{
if (a[i] < a[j])b[k] = a[i++];
else b[k] = a[j++];
}
while(i <= m)b[k++] = a[i++];
while(j <= n)b[k++] = a[j++];
}
void MergeSort(int *a,int *b,int s,int t)
{
if (s == t)
b[s] = a[s];
else
{
int b1[N];
int m = (s + t) / 2;
MergeSort(a, b1, s, m);
MergeSort(a, b1, m + 1, t);
Merge(b1, b, s, m, t);
}
/*
static int count = 0;
cout << "第" <<++count << "趟:";
for (size_t i = 0; i != 10; i++)
cout << *(b + i) << " ";
cout << endl;
*/
}
int main()
{
int a[N];
for (size_t i = 0; i != N; i++)
cin >> a[i];
MergeSort(a,a,0,N-1);
cout << "排好后结果为:" << endl;
for (size_t i = 0; i != N; i++)
cout << a[i] << " ";
return 0;
}
归并排序
最新推荐文章于 2024-03-26 17:18:09 发布