归并排序模板

  

#include<bits/stdc++.h>
using namespace std;
void merge(int *arr,int l,int m,int r){
	int ls=m-l,lr=r-m+1;
	int la[ls],ra[lr];
		for(int i=l;i<=m-1;i++)
			la[i-l+1]=arr[i];
		for(int j=m;j<=r;j++)
			ra[j-m+1]=arr[j];
			int i=1,j=1,e=l;
			while(i!=ls+1||j!=lr+1){
					if((la[i]<ra[j]||j==lr+1)&&i!=ls+1){
						arr[e]=la[i++];
					}else{
						arr[e]=ra[j++];
					}
					e++;
				}
			return ;
}
void mergesort(int *arr,int l,int r){
	int m=(l+r)/2+1;
		if(l==r){
			return ;
		}else{
			mergesort(arr,l,m-1);
			mergesort(arr,m,r);
			merge(arr,l,m,r);
	}
}
int main()
{
	int arr[7]={0,6,9,8,1,7,3};
		mergesort(arr,1,6);
		for(int i=1;i<=6;i++){
			cout<<arr[i]<<" ";
		}
		cout<<endl;
		return 0;
}

  

posted @ 2018-04-23 16:44  松手丶明晃晃  阅读(81)  评论(0编辑  收藏  举报