首页 > 代码库 > 归并排序
归并排序
1 #include<stdio.h> 2 void MERGE(int *A,int p,int q,int r){ 3 int i,j,k; 4 int *B=malloc((r-p+1)*sizeof(int)); 5 i=p;j=q+1;k=0; 6 while(i<=q&&j<=r){ 7 if(A[i]<A[j]){ 8 B[k]=A[i]; 9 i++;10 }11 else{12 B[k]=A[j];13 j++;14 }15 k++;16 }17 while(i<=q){B[k]=A[i];i++;k++;}18 while(j<=r){B[k]=A[j];j++;k++;}19 for(i=p,k=0;i<=r;i++,k++){20 A[i]=B[k];21 }23 }24 void MERGE_SORTUP(A,p,r){25 int q;26 if(p<r){27 q=(p+r)/2;28 MERGE_SORTUP(A,p,q);29 MERGE_SORTUP(A,q+1,r);30 MERGE(A,p,q,r);31 }32 }33 34 int main(){35 int A[]={19,28,73,65,53,14,34,27,1,0};36 int length=sizeof(A)/sizeof(int);37 int i;38 MERGE_SORTUP(A,0,0+length-1);39 for(i=0;i<length;i++)40 printf("%d\t",A[i]);41 }
结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。