c语言分治法实现合并排序源码.doc
分治法实现合并排序#include<stdio.h>#include<stdlib.h>#include<malloc.h>voidmerge(inta,intp,intq,intr)inti,j,k;int*tmp=(int*)malloc(r-p+1)*sizeof(int);i=p;j=q+1;k=0;while(i<=q&&j<=r)if(ai<aj)tmpk=ai+;elsetmpk=aj+;k+;while(i<=q)tmpk+=ai+;while(j<=r)tmpk+=aj+;for(i=0;i<k;i+)ap+i=tmpi;free(tmp);voidmerge_sort(inta,intp,intr)if(p<r)intq=(p+r)/2;merge_sort(a,p,q);merge_sort(a,q+1,r);merge(a,p,q,r);voidmain()intA10=56,22,40,78, 31,13,92,56,26,20;merge_sort(A,0,9);for(inti=0;i<10;i+)printf("%d",Ai);printf("nn");