归并排序模板

本文介绍了一种经典的排序算法——归并排序,并提供了详细的C++实现代码。通过递归将数组分为更小的部分进行排序,然后合并这些部分来完成整个数组的排序过程。最后展示了一个排序后的数组实例。

  

#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;
}

  

转载于:https://www.cnblogs.com/wlgclining/p/8920077.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值