简单排序玄关
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/3/22 22:19
  • 上次更新2024/3/23 09:07:58
查看原帖
简单排序玄关
1246532
封禁用户楼主2024/3/22 22:19

题目是这样的

  • 现给定一序列,请将其按升序排序并输出。(要求使用归并排序)

我写的是这样的

#include<bits/stdc++.h>
using namespace std;
int a[201000];
int x[201000];
void merge(int l,int mid,int r){
	int i,k,j;
	i=l;
	j=mid+1;
	k=l;
	while(i<=mid&&j<=r){
		if(a[i]<a[j]){
			x[k]=a[i];
			k++;
			i++;
		}else{
			x[k]=a[j];
			k++;
			j++;	
		}
	}
	while(i<=mid){
		x[k]=a[i];
			k++;
			i++;
	}
	while(j<=r){
		x[k]=a[j];
			k++;
			j++;	
	}	
	a[i]=x[i]; 
	//cout<<endl;
}
void bin(int l,int r){
	if(l==r){
		return ;
	}
	int mid=(l+r)/2;
	bin(l,mid); 
	bin(mid+1,r);
	merge(l,mid,r);
}

int main(){
	int n;
	cin>>n;
	for(int i=1; i<=n; i++) cin>>a[i];
	bin(1,n);
	for(int i=1; i<=n; i++) cout<<a[i]<<endl;
	return 0;
}
2024/3/22 22:19
加载中...