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]<<" ";
	}
}

  

posted @ 2020-06-19 21:01  慕舲-不再使用  阅读(214)  评论(0编辑  收藏  举报