#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
void merge(int *a,int L,int M,int R)
{
int LEFT_SIZE=M-L;
int RIGHT_SIZE=R-M+1;
int *left=new int[LEFT_SIZE];
int *right=new int[RIGHT_SIZE];
int i,j,k;
for(i=L;i<M;i++)
{
left[i-L]=a[i];
}
for(i=M;i<=R;i++)
{
right[i-M]=a[i];
}
i=0,j=0,k=L;
while(i<LEFT_SIZE&&j<RIGHT_SIZE)
{
if(left[i]<right[j])
{
a[k]=left[i];
i++;
k++;
}
else
{
a[k]=right[j];
j++;
k++;
}
}
while(i<LEFT_SIZE)
{
a[k]=left[i];
i++;
k++;
}
while(j<RIGHT_SIZE)
{
a[k]=right[j];
j++;
k++;
}
}
}
void mergeSort(int *a,int L,int R)
{
if(L==R)
{
return ;
}
else
{
int M=(L+R)/2;
mergeSort(a,L,M);
mergeSort(a,M+1,R);
merge(a,L,M+1,R);
}
}
int main()
{
int a[9]={2,8,9,10,4,5,6,7};
int L=0,R=7;
mergeSort(a,0,7);
for(int i=0;i<=R;i++)
{
cout<<a[i]<<" ";
}
}
归并排序
最新推荐文章于 2024-12-15 17:47:59 发布