洁洁好累 2021-04-05 00:34 采纳率: 0%
浏览 89
已结题

为什么我写的归并排序数组4可以排序,10就会出错

#include<iostream>
using namespace std;
int merge(int arr[],int begin,int middle,int end);
int mergeSort(int arr[],int begin,int end){
	if(end-begin==1){//如果区间中只有两个元素 
		if(arr[begin]>arr[end]){
			int temp=arr[begin];
			arr[begin]=arr[end];
			arr[end]=temp;
		} 
		return 0;
	}
	else if(end-begin==0){//区间中只有一个数
		return 0; 
	}
	else{//多于两个数则继续划分 
		int m=(begin+end)/2;
		mergeSort(arr,begin,m);
		mergeSort(arr,m+1,end);
		merge(arr,begin,m,end);
		
	}
	
} 

int merge(int arr[],int begin,int middle,int end){
	int help[end-begin+1];//帮助数组,将排好序的数据放入新数组
	int i=begin;
	int j=middle+1;
	int k=begin;
	while(i<=middle&&j<=end){
		help[k++]=arr[i]<arr[j]?arr[i++]:arr[j++];
	}
	while(i<=middle)
		help[k++]=arr[i++];
	while(j<=end)
		help[k++]=arr[j++];	
	for(int i=0;i<k;i++){//将新数组中排好的数传给arr【】 
		arr[i]=help[i];
	}
}
int main(){
	int num;
	cout<<"输入数组长度:"<<endl;
	cin>>num; 
	int R[num];
	cout<<"输入数组数据()";
	for(int i=0;i<num;i++){
		cin>>R[i]; 
	}
	mergeSort(R,0,num);
	for(int j=0;j<num;j++)
		cout<<R[j]<<" ";
}
  • 写回答

2条回答 默认 最新

  • 关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月6日

悬赏问题

  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api