为什么会爆内存啊?
查看原帖
为什么会爆内存啊?
334389
qq1508020550楼主2024/1/23 01:25
#include<iostream>
#include<vector>
using namespace std;
int tmp[100010];
void merge_sort(vector<int> &nums,int left,int right){
	if(left>=right)
		return;
	int mid=(right-left)/2;
	merge_sort(nums,left,mid);
	merge_sort(nums,mid+1,right);
	int i=left,j=mid+1,k=0;
	while(i<=mid&&j<=right){
		if(nums[i]<nums[j])
			tmp[k++]=nums[i++];
		else
			tmp[k++]=nums[j++];
	}
	while(i<=mid) tmp[k++]=nums[i++];
	while(j<=right) tmp[k++]=nums[j++];
	for(int i=left,j=0;i<=right;++i,++j)
		nums[i]=tmp[j];
}
int main(){
	int n;
	cin>>n;
	vector<int> nums(n,0);
	for(int i=0;i<n;++i) cin>>nums[i];
	merge_sort(nums,0,n-1);
	for(int i=0;i<n;++i){
		if(i!=0)
			cout<<" ";
		cout<<nums[i];
	}
	return 0;
}
2024/1/23 01:25
加载中...