猫史档案馆


为什么归并排序报错

用户:AlanTuringAlanTuring查看:0 回复:1 评论:0 创建时间:2021-10-17T15:52:31


rt

code:

 

#include<iostream>
using namespace std;
void Merge(int *a,int l,int mid,int r,int length);
void MergeSort(int *a,int l,int r)
{
	if(l>=r)
		return;
	int mid=l+(r-l)>>1;
	MergeSort(a,l,mid);//sort left
	MergeSort(a,mid+1,r);//sort right
	Merge(a,l,mid,r,r-l+1);//Merge
}
void Merge(int *a,int l,int mid,int r,int length)
{
	int help[length];
	int i=0,p1=l,p2=mid+1;
	while(p1<=mid && p2<=mid)
		help[i++]=a[p1]<=a[p2]?a[p1++]:a[p2++];
	while(p1<=mid)
		help[i++]=a[p1++];
	while(p2<=r)
		help[i++]=a[p2++];
	for(i=0;i<length;i++)
		a[l+i]=help[i];
	
}
int main()
{
	int n;//n is the length of arr.
	cin>>n;
	int arr[n];
	for(int i=0;i<n;i++)//input arr
	{
		cin>>arr[i];
	}
	MergeSort(arr,0,n-1);
	for(int i=0;i<n;i++)//output arr
	{
		cout<<arr[i]<<" ";
	}
	return 0;
}


return 0;
}


回复

上一页1 页 / 共 1下一页
happy_chickenhappy_chicken

。。。

点赞0


评论