递归方法实现归并排序
来源:互联网 发布:如何看淘宝信誉 编辑:程序博客网 时间: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");}