我是C ++的初学者并在C ++中实现合并排序,但在以下代码中遇到运行时错误,我无法修复代码: 请修复代码中的错误!!
#include<iostream>
using namespace std;
void merge(int arrm[],int l,int m,int r){
int temp1[m-l+1];
int temp2[r-m];
int z=0,y;
for(y=0,z=l;z<m+1;y++,z++){
temp1[y]=arrm[z];
}
for(z=m+1,y=0;z<r+1;y++,z++){
temp2[y]=arrm[z];
}
int i=0,j=0,k=0;
while(true){
if(temp1[i]<=temp2[j]){
arrm[k]=temp1[i];
i=i+1;
k=k+1;
}
else{
arrm[k]=temp2[j];
j=j+1;
k=k+1;
}
if(i==m-l+1 || j==r-m){
break;
}
}
if(j==r-m){
while(i!=m-l+1){
arrm[k]=temp1[i];
k=k+1;
i=i+1;
}
}
else if(i==m-l+1){
while(j!=r-m){
arrm[k]=temp2[j];
k=k+1;
i=i+1;
}
}
}
void mergesort(int arr[],int l,int r){
if(r>l){
int m=(l+r)/2;
mergesort(arr,l,m);
mergesort(arr,m+1,r);
merge(arr,l,m,r);
}
}
int main(){
int arrp[4]={5,4,3,2};
mergesort(arrp,0,3);
for(int i=0;i<4;i++){
cout<<arrp[i];
}
return 0;
}
请修正错误,因为代码无效!!