使用归并排序后输出的数组还是原来的形式,没有变化,求大佬解决
#include<stdio.h>
void merge(int arr[],int L,int M,int R)
{
int left[M-L];
int right[R-M+1];
for(int i=L;i<M;i++)
{
left[i-L] = arr[i];
}
for(int i=M;i<=R;i++)
{
right[i-M] = arr[i];
}
int i=0,j=0,k=0;
while(i < M-L && j < R-M+1)
{
if(left[i] < right[j])
{
left[i] = arr[k];
i++;
k++;
}
else
{
right[j] = arr[k];
j++;
k++;
}
}
while(j < R-M+1)
{
right[j] = arr[k];
j++;
k++;
}
while(i < M-L)
{
left[i] = arr[k];
i++;
k++;
}
}
void merge_sort(int arr[],int L,int R)
{
if(L == R)
return;
else
{
int M = (L+R)/2;
merge_sort(arr,L,M);
merge_sort(arr,M+1,R);
merge(arr,L,M+1,R);
}
}
int main(void)
{
int arr[] = {2,7,8,10,3,5,6,9};
int L = 0;
int R = 7;
merge_sort(arr,L,R);
for(int i=0;i<=R;i++)
{
printf("%d ",arr[i]);
}
return 0;
}