在写归并排序时写了这么个程序
#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函数写在外面问题就解决了 请问为什么?哪位大佬解决一下