Please Provide Code in Either JAVA or C and provide CLEAR Ex
Please Provide Code in Either JAVA or C++ and provide CLEAR! Explanatin on what you are doing in the code. For goodfeedbackand full points. 9
Problem The problem of sorting a list of numbers lends itself immediately to a divide-and-conquer s split the list into two halves, recursively sort each half, and then merge the two sorted sublists recall the problem Merge Two Sorted Arrays Source: Algorithms by Dasgupta, Papadimitriou, Vazirani. McGraw-Hill. 2006. Given: A positive integer n s 105 and an array A1..nl of integers from -10s to 10 Return: A sorted array A1..n Sample Dataset 10 20 19 35 18 17 20 20 1 4 4 Sample output 200 -18 1 4 4 17 19 20 20 35Solution
#include <iostream>
using namespace std;
void merge(int a[],int l,int r)
{
int c[r-l+1];
int mid = l + (r-l)/2;
int p=l,q=mid+1,r1=0;
int n = mid,m=r;
//cout<<l<<\' \'<<mid<<\' \'<<r<<endl;
/*for(int i=l;i<=r;i++)
{
//a[i]=c[i];
cout<<a[i]<<\' \';
}
cout<<endl;*/
while(p<=n&&q<=m)
{
if(a[p]<a[q])
{
c[r1] = a[p];
p++;
}
else
{
c[r1] = a[q];
q++;
}
r1++;
}
while(p<=n)
{
c[r1] = a[p];
p++;
r1++;
}
while(q<=m)
{
c[r1] = a[q];
q++;
r1++;
}
for(int i=l,j=0;i<=r;i++,j++)
{
a[i]=c[j];
//cout<<c[j]<<\' \';
}
//cout<<endl;
}
void mergesort(int a[],int l,int r)
{
if(l>=r)
{
return;
}
int mid = l + (r-l)/2;
mergesort(a,l,mid);
mergesort(a,mid+1,r);
merge(a,l,r);
}
int main()
{
int n,m;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
mergesort(a,0,n-1);
for(int i=0;i<n;i++)
{
cout<<a[i]<<\' \';
}
cout<<endl;
}

