使用归并排序后输出的数组还是原来的形式,没有变化,求大佬解决

#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;
}


  • vicky    2020-03-27 10:27:38
  • 阅读 699    收藏 0    回答 1
  • 邀请
  • 收藏
  • 分享
发送
登录 后发表评论
  • 51testing软件测试圈微信