#include <iostream>
using namespace std;
void merge(int A[],int temparray[],int lpos,int rpos,int rend)
{
int i,temppos,lend,numelements;
temppos=lpos;
lend=rpos-1;
numelements=rend-lpos+1;
while (lpos<=lend && rpos<=rend)
{
if (A[lpos]<=A[rpos])
{
temparray[temppos++]=A[lpos++];
}
else
{
temparray[temppos++]=A[rpos++];
}
}
while (lpos<=lend)
{
temparray[temppos++]=A[lpos++];
}
while (rpos<=rend)
{
temparray[temppos++]=A[rpos++];
}
for (i=0;i<numelements;i++)
{
A[i]=temparray[i];
}
}
void Msort(int x[],int temparray[],int left,int right)
{
int mid;
if (left<right)
{
mid=left+(right-left)/2;
Msort(x,temparray,left,mid);
Msort(x,temparray,mid+1,right);
merge(x,temparray,left,mid+1, right);
}
}
void MergeSort(int x[],int N)
{
int *temparray=new int[N];
Msort(x,temparray,0,N-1);
delete []temparray;
}
int main()
{
int A[]={3,1,7,5,9};
MergeSort(A,5);
for (int i=0;i<sizeof(A)/sizeof(*A);i++)
{
cout<<A[i]<< " ";
}
return 0;
}
归并排序实现
最新推荐文章于 2023-05-16 17:55:30 发布