递归函数求助
  • 板块学术版
  • 楼主weizhituteng2
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/12/17 09:06
  • 上次更新2023/12/17 11:07:07
查看原帖
递归函数求助
665585
weizhituteng2楼主2023/12/17 09:06

在写归并排序时写了这么个程序

#include<bits/stdc++.h>
using namespace std;
long long n;
long long arr[100000+1];

void merge_sort(long long l,long long r){
	if(l>=r) return;//只剩一个元素结束
	int mid = l+r>>1;
	merge_sort(l,mid);//分治
	merge_sort(mid+1,r);
	long long i = l,j = mid+1,k = 1;
	long long temp[100000+1];
	while(i<=mid&&j<=r){
		  if(arr[i]<=arr[j]) temp[k++] = arr[i++];//对较小的进行排序
		  else temp[k++] = arr[j++];
	}
	while(i<=mid) temp[k++] = arr[i++];
	while(j<=r) temp[k++] = arr[j++];//加入剩余元素
    for(i = l, j = 1; i <= r; i++, j++) {
    arr[i] = temp[j]; // 加入排序后的元素
    }
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>arr[i];
	}
	merge_sort(1,n);
	for(int i=1;i<=n;i++){
	    cout<<arr[i]<<" ";
	}
	return 0;
}

结果死循环了 后来发现temp函数写在外面问题就解决了 请问为什么?哪位大佬解决一下

2023/12/17 09:06
加载中...