I wrote this code for sorting a array. It wouldn't sort any array and won't give an error either and I can't seem to find to root cause of this issue.
This code was written as a part of learning curve and Code is exactly the same from the YT video , I am learning from. I have google another code snippet and it works properly but I want to see here what the problem is so I can hopefully learn from it and void making the same problem in future
void merge(int arr[], int l, int mid, int r)
{
int n1= mid-l+1;
int n2= r-mid;
int array1[n1];
int array2[n2];
for(int i=0; i<n1; i++)
{
array1[i]=arr[l+i];
}
for(int i=0; i<n2; i++)
{
array2[i]=arr[mid+1+i];
}
int i=0; int j=0; int k=l;
while(i<n1 && j<n2)
{
if(array1[i]<array2[j])
{
arr[k]=array1[i];
i++;k++;
}
else
{
arr[k]=array2[j];
j++;k++;
}
while(i<n1)
{
arr[k]=array1[i];
i++;k++;
}
while(j<n2)
{
arr[k]=array2[j];
j++,k++;
}
}
}
void mergeSort(int arr[], int l, int r)
{
if (l<r)
{
int mid= (l+r)/2;
mergeSort(arr, l, mid);
mergeSort(arr, mid+1, r);
merge(arr, l, mid, r);
}
}
int main()
{
int arr[]={5,4,3,2,1};
mergeSort(arr, 0, 4);
for(int i=0; i<5; i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}