归并排序的完整C++实现代码

#include<iostream> using namespace std; #define N 100 int n; void MergeSort(int r[],int r1[],int s,int t) { if(s==t) r1[s]=r[s]; else { int m=(s+t)/2; MergeSort(r,r1,s,m); MergeSort(r,r1,m+1,t); int i=s,j=m+1,l=s; while(i<=m && j<=t) { if(r1[i]<=r1[j]) r[l++]=r1[i++]; else r[l++]=r1[j++]; } if(i<=m) while(i<=m) r[l++]=r1[i++]; else while(j<=t) r[l++]=r1[j++]; for(int k=1;k<=n;k++) r1[k]=r[k]; } } void main() { int r[N],r1[N]; int i; cin>>n; for(i=1;i<=n;i++) cin>>r[i]; MergeSort(r,r1,1,n); for(int q=1;q<=n;q++) cout<<" "<<r[q]; cout<<endl; }

你可能感兴趣的:(C++)