#include<iostream>
using namespace std;
int merge(int a[],int i,int k,int j)
{
int* p=new int[j-i+1];
int tmp=0;
int m=i;
int n=k+1;
while(m<=k&&n<=j)
{
if(a[m]<a[n])
{
p[tmp]=a[m];
tmp++;
m++;
}else
{
p[tmp]=a[n];
tmp++;
n++;
}
}
if(m>k)
{
while(n<=j)
{
p[tmp]=a[n];
n++;
tmp++;
}
}
if(n>j)
{
while(m<=k)
{
p[tmp]=a[m];
tmp++;
m++;
}
}
for(int t=0;t<tmp;t++)
{
a[i++]=p[t];
}
delete p;
return 0;
}
void mergeSort(int a[],int i,int j)
{
if(i>=j)
{
return ;
}else
{
int t=(i+j)/2;
mergeSort(a,i,t);
mergeSort(a,t+1,j);
merge(a,i,t,j);
return ;
}
}
int main()
{
int a[10]={1,7,3,4,5,2,9,6,10,8};
mergeSort(a,0,9);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
12-22