用c++编写归并排序

定义一串数组进行排序就好。
2025-03-10 04:43:11
推荐回答(2个)
回答1:

#include
using namespace std;

void merge(int a[],int c[],int l,int mid,int r)
{
int i=l,j=mid+1,m=1;
while (i<=mid && j<=r)
{
if (a[i] c[m++]=a[j++];
else
c[m++]=a[i++];
}
while (i<=mid)
c[m++]=a[i++];
while (j<=r)
c[m++]=a[j++];
for (int q=1;q<=r-l+1;q++)
a[l+q-1]=c[q];
}

void sort(int a[],int c[],int l,int r)
{
if (l{
int mid=(l+r)/2;
sort(a,c,l,mid);
sort(a,c,mid+1,r);
merge(a,c,l,mid,r);
}
}

int main()
{
int m,n;
cin>>n;
int a[n+1];
int c[n+1];
for (m=0;m cin>>a[m];
sort(a,c,0,n-1);

for (m=0;m cout<system("pause");
return 0;
}

回答2: