递归方法实现归并排序

来源:互联网 发布:如何看淘宝信誉 编辑:程序博客网 时间:2024/04/26 08:11
#include <stdio.h> void Merge(int SR[],int TR[],int i,int m,int n) {  int j,k,l;  for(j=m+1,k=i;i<=m && j<=n;k++)   {   if (SR[i]<SR[j])    TR[k]=SR[i++];   else    TR[k]=SR[j++];  }  if(i<=m)  {   for(l=0;l<=m-i;l++)    TR[k+l]=SR[i+l];    }  if(j<=n)  {   for(l=0;l<=n-j;l++)    TR[k+l]=SR[j+l];    } }void MSort(int SR[],int TR[],int s,int t,int TR2[]){  if(s==t) TR[s]=SR[s]; else {  int m=(s+t)/2;  MSort(SR,TR2,s,m,TR2);  MSort(SR,TR2,m+1,t,TR2);  Merge(TR2,TR,s,m,t); }}void main(){ int arr[10]={1,3,5,7,9,2,4,6,8,10}; int TR2[10]={0}; MSort(arr,arr,0,9,TR2); int i=0; for(;i<10;i++) printf("%d\t",arr[i]); printf("\n");}

原创粉丝点击