C++归并排序
#include <iostream> using namespace std; void h(int a[],int a1[],int x,int t,int y){ int z=x; int v=t+1; int k=x; while(x<=t&&v<=y){ if(a[x]<a[v]){ a1[k]=a[x]; k++; x++; } else{ a1[k]=a[v]; k++; v++; } } while(x<=t){ a1[k]=a[x]; k++; x++; } while(v<=y){ a1[k]=a[v]; k++; v++; } for(int i=z;i<=y;i++){ a[i]=a1[i]; } } void m(int a[],int a1[],int x,int y){ if(x<y){ int t=(x+y)/2; m(a,a1,x,t); m(a,a1,t+1,y); h(a,a1,x,t,y); } } int main(){ int n,a[105],a1[105]={0}; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } m(a,a1,0,n-1); for(int i=0;i<n;i++){ cout<<a[i]<<" "; } }