#include<bits/stdc++.h>
#define n1 First_Array_size
#define n2 Second_Array_size
#define F First_Array
#define L Second_Array
using namespace std;
void A_merge(int a[], int left, int mid, int right)
{
int i, j, n1, n2, k;
n1 = mid - left +1;
n2 = right - mid;
int F[n1], L[n2];
for(i=0;i<n1;i++)
F[i] = a[left+i];
for(j=0;j<n2;j++)
L[j] = a[mid+1+j];
i = j = 0;
k = left;
while(i<n1 && j<n2)
{
if(F[i] <= L[j])
a[k++] = F[i++];
else
a[k++] = L[j++];
}
while(i<n1)
a[k++] = F[i++];
while(j<n2)
a[k++] = L[j++];
}
void merge_sort(int a[], int left, int right)
{
if(left>=right)
return;
int mid = left + (right - left)/2;
merge_sort(a, left, mid);
merge_sort(a, mid+1, right);
A_merge(a, left, mid, right);
}
int main()
{
int i, n;
cout << "Enter Array Element Number :: ";
cin >> n;
int a[n];
cout << "Enter Array Element :: ";
for(i=0;i<n;i++)
cin >> a[i];
merge_sort(a, 0, n-1);
cout << endl << "After Merge Sort :: ";
for(i=0;i<n;i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
#define n1 First_Array_size
#define n2 Second_Array_size
#define F First_Array
#define L Second_Array
using namespace std;
void A_merge(int a[], int left, int mid, int right)
{
int i, j, n1, n2, k;
n1 = mid - left +1;
n2 = right - mid;
int F[n1], L[n2];
for(i=0;i<n1;i++)
F[i] = a[left+i];
for(j=0;j<n2;j++)
L[j] = a[mid+1+j];
i = j = 0;
k = left;
while(i<n1 && j<n2)
{
if(F[i] <= L[j])
a[k++] = F[i++];
else
a[k++] = L[j++];
}
while(i<n1)
a[k++] = F[i++];
while(j<n2)
a[k++] = L[j++];
}
void merge_sort(int a[], int left, int right)
{
if(left>=right)
return;
int mid = left + (right - left)/2;
merge_sort(a, left, mid);
merge_sort(a, mid+1, right);
A_merge(a, left, mid, right);
}
int main()
{
int i, n;
cout << "Enter Array Element Number :: ";
cin >> n;
int a[n];
cout << "Enter Array Element :: ";
for(i=0;i<n;i++)
cin >> a[i];
merge_sort(a, 0, n-1);
cout << endl << "After Merge Sort :: ";
for(i=0;i<n;i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
Comments
Post a Comment