#include "stdafx.h"
#include<iostream>
using namespace std;
void merge(int array1[], int array2[], int i,int mid, int end)
{
int k,l,j;
for( k=i,l=i,j=mid+1;l<=mid&&j<=end;k++)
{
if(array1[l]<array1[j])
{
array2[k]=array1[l];
l++;
}
else
{
array2[k]=array1[j];
j++;
}
}
while(l<=mid)
array2[k++]=array1[l++];
while(j<=end)
array2[k++]=array1[j++];
for(int n=i;n<=end;n++)
array1[n]=array2[n];
}
void mergesort( int array1[],int array2[],int i,int n)
{
if(i==n)
return;
else
{
int mid=(i+n)/2;
mergesort(array1,array2,i,mid);
mergesort(array1,array2,mid+1,n);
merge(array1,array2,i,mid,n);
}
}
void main()
{
int array1[5]={1,5,2,7,4};
int array2[5];
mergesort(array1,array2,0,4);
for(int i=0;i<5;i++)
{
cout<<array1[i]<<" ";
}
cout<<endl;
}
#include<iostream>
using namespace std;
void merge(int array1[], int array2[], int i,int mid, int end)
{
int k,l,j;
for( k=i,l=i,j=mid+1;l<=mid&&j<=end;k++)
{
if(array1[l]<array1[j])
{
array2[k]=array1[l];
l++;
}
else
{
array2[k]=array1[j];
j++;
}
}
while(l<=mid)
array2[k++]=array1[l++];
while(j<=end)
array2[k++]=array1[j++];
for(int n=i;n<=end;n++)
array1[n]=array2[n];
}
void mergesort( int array1[],int array2[],int i,int n)
{
if(i==n)
return;
else
{
int mid=(i+n)/2;
mergesort(array1,array2,i,mid);
mergesort(array1,array2,mid+1,n);
merge(array1,array2,i,mid,n);
}
}
void main()
{
int array1[5]={1,5,2,7,4};
int array2[5];
mergesort(array1,array2,0,4);
for(int i=0;i<5;i++)
{
cout<<array1[i]<<" ";
}
cout<<endl;
}