本文共 686 字,大约阅读时间需要 2 分钟。
模板直接见代码:
#includeusing namespace std;const long M=999999999;void Merge(int A[],long Left,long Middle,long Right){ long n1=Middle-Left+1; long n2=Right-Middle; int *L = new int[n1+2]; //预留空间 int *R = new int[n2+2]; long i,k; //分成左右数组 for(i=1;i<=n1;i++) L[i]=A[Left+i-1]; for(i=1;i<=n2;i++) R[i]=A[Middle+i]; L[n1+1]=M; //哨兵 R[n2+1]=M; i=1; long j=1; for(k=Left;k<=Right;k++) { //如果某一边先抵达哨兵,另一边一定是小于的 if(L[i]<=R[j]) A[k]=L[i++]; else A[k]=R[j++]; } delete L,R;}void Merge_sort(int A[],long Left,long Right){ long Middle; if(Left
运行结果:
1 4 5 7 8 10 22 23 33 199
转载地址:http://bfxyx.baihongyu.com/