You are on page 1of 2

#include <iostream>

#include<cstdlib>
using namespace std;
void mergearray(int *a, int lo, int mid, int hi)
{
int i=lo;
int j=mid+1;
//Memecah Array Menjadi 2 bagian
int k=0;
//index untuk array 'b'
int *b=new int[hi-lo+1];
while(i<=mid && j<=hi)
{
if(a[i]<a[j])
b[k++]=a[i++];
else
b[k++]=a[j++];
}
while(i<=mid)
b[k++]=a[i++];

//array baru yang akan digabung


//me merger

//kiri elemen

while(j<=hi)
b[k++]=a[j++];
//array 'b' langsung diurutkan. Mencopy elemen ke array 'a'
for(i=hi;i>=lo;i--)
a[i]=b[--k];
}
void mergesort(int *a, int lo, int hi)
{
if(lo<hi)
{
int mid=((lo+hi)/2);
mergesort(a,lo,mid);
mergesort(a,mid+1,hi);
mergearray(a,lo,mid,hi);
}
}
int main()
{
int a[]={8,1,3,4,2,10,4,6};
cout<<"Sebelum : \n";
for(int i=0;i<8;i++)
{
cout<<a[i]<<" ";
}
cout<<"\n";
mergesort(a,0,7);
cout<<"\nSesudah : \n";
for(int i=0;i<8;i++)
{
cout<<a[i]<<" ";
}

return 0;
}

You might also like