#include<iostream>
using namespace std;
const int maxn=100;
void merge(int a[],int l1,int r1,int l2,int r2)
{
int i=l1;
int j=l2;
int temp[maxn];
int index=0;
while(i<=r1&&j<=r2)
{
if(a[i]<=a[j])
{
temp[index++]=a[i++];
}
else
{
temp[index++]=a[j++];
}
}
while(i<=r1) temp[index++]=a[i++];
while(j<=r2) temp[index++]=a[j++];
for(int i=0;i<index;i++)
{
a[l1+i]=temp[i];
}
}
void mergesort(int a[],int left,int right)
{
if(left<right)
{
int mid=(left+right)/2;
mergesort(a,left,mid);
mergesort(a,mid+1,right);
merge(a,left,mid,mid+1,right);
}
}
int main()
{
int a[7]={12,33,57,66,18,27,64};
mergesort(a,0,6);
for(int i=0;i<7;i++)
{
cout<<a[i]<<endl;
}
system("pause");
return 0;
}