归并排序,求个列文虎克
查看原帖
归并排序,求个列文虎克
1057821
sad_lin楼主2024/7/27 21:14

我太弱了,看不出来(悲)

归并排序

#include<bits/stdc++.h>
using namespace std;
int n;
int a[600005];
int b[600005];
void mergee(int l,int r){
	int mid=(l+r)>>1;
	int lp=l,rp=mid+1,x=1; 
	
	while(lp <= mid && rp <= r){
		if(a[lp]<=a[rp]){
			b[x++]=a[lp];
			lp++;
		}
		else{
			b[x++]=a[rp];
			rp++;
		}
	}
	
	while(lp<=mid){
		b[x++]=a[lp];
		lp++;
	}
	
	while(rp<=r){
		b[x++]=a[rp];
		rp++;
	}
	
	for(int i=l;i<=r;i++){
		a[i]=b[i];
	}
  	return;
}
void mergesort(int l,int r){
	if(l==r){
		return;
	}
	int mid=(l+r)>>1;
	mergesort(l,mid);
	mergesort(mid+1,r);
	mergee(l,r);
}
int main(){
	cin>>n;
	
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	mergesort(1,n);
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	
	
	return 0;
} 
2024/7/27 21:14
加载中...