算法导论中的归并排序C语言实现

来源:互联网 发布:java定时执行任务 编辑:程序博客网 时间:2024/05/11 14:14
include<stdio.h>#include<stdlib.h>#include<math.h>#define max 10000//归并排序 数组A A[p..q] A[q+1..r]void Merge(int A[],int p,int q,int r){int n1,n2;int k=0;int i,j;n1 = q-p+1; //left length n2 = r-q;//right lengthint L[n1],R[n2];for(i=1 ; i<=n1 ; i++)L[i] = A[p+i-1];for(j=1 ; j<=n2 ; j++)R[j] = A[q+j];L[n1+1] = max;R[n2+1] = max;i=1;j=1;for(k=p;k<=r;k++){if(L[i]<=R[j]){A[k] = L[i];i++;}else{A[k] = R[j];j++;}}return 0;}void MergeSort(int A[],int p,int r){int q;if(p < r){q = (int)((p+r)/2);MergeSort(A,p,q);MergeSort(A,q+1,r);Merge(A,p,q,r);}return 0;}int main(void){int i=0;int A[]={2,4,5,7,1,3,2,3,4,4,6};MergeSort(A,0,10);for(i=0;i<11;i++){printf("%d ",A[i]);}return 0;}

0 0
原创粉丝点击