不知道什么原因,进行排序后,数组还是以原来的方式输出。
#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++;
}
}
int main(void)
{
int arr[] = {1,8,9,10,2,5,6,7};
int L = 0;
int M = 4;
int R = sizeof(arr)/sizeof(arr[0]);
merge(arr,L,M,R);
for(int i=0;i<R;i++)
{
printf("%d ",arr[i]);
}
return 0;
}