#include<iostream>
#define MAX 1000
using namespace std;
//合并排序
void Merg(int a[],int b[],int l,int m,int r)//将a中两个区间归并到b中
{
int index=l;
int i;
int j;
for( i=l, j=m+1;i<=m&&j<=r;index++)
{
if(a[i]<a[j])
{
b[index]=a[i];
i++;
}
else
{
b[index]=a[j];
j++;
}
}
while(i<=m){ b[index]=a[i];index++;i++;}
while(j<=r){ b[index]=a[j];index++;j++;}
for(int i=l;i<=r;i++)
a[i]=b[i];
}
void MergSort(int a[],int b[],int l,int r)
{
if(l==r)
a[l]=b[l];
else
{
int m=(l+r)/2;
MergSort(a,b,l,m);
MergSort(a,b,m+1,r);
Merg(a,b,l,m,r);
}
}
void main()
{
while(true)
{
int a[MAX];
int b[MAX];
cout<<"请输入数据个数:"<<endl;
int len;
cin>>len;
cout<<"请输入数据:"<<endl;
for(int i=0;i<len;i++)
cin>>b[i];
MergSort(a,b,0,len-1);
for(int i=0;i<len;i++)
cout<<b[i]<<" ";
cout<<endl;
}
}
合并排序
最新推荐文章于 2021-08-25 16:10:57 发布