【发布时间】:2020-06-09 05:30:57
【问题描述】:
我不知道这段代码有什么问题,但我花了太多时间来找出问题,但仍然无法解决,我认为复制数组有一些错误,因为其他所有事情似乎都是正确的
请检查此代码-
#include<iostream>
using namespace std;
void MergeArray(int arr[],int lb,int mid,int ub){
int i=lb;
int j=mid+1;
int k=0;
int newarr[ub-lb+1];
//condition required for comparison between the split parts
while(i<=mid && j<=ub){
if(arr[i] < arr[j]){
newarr[k]=arr[i];
k++;
i++;
}
//basically a[j]<a[i] in this else condition
else{
newarr[k]=arr[j];
k++;
j++;
}
}
//all th left out elements in a[i] when a[j] is finished are added to newarr
while(i<=mid){
newarr[k]=arr[i];
k++;
i++;
}
//all th left out elements in a[j] when a[i] is finished are added to newarr
while(j<=ub){
newarr[k]=arr[j];
k++;
j++;
}
//copying all the elements of newarr to original arr
//i think this part has something messed up
for(int i=lb;i<=ub;i=i+1){
arr[i]= newarr[i];
}
}
void MergeElements(int arr[], int lb,int ub){
int mid;
if(lb<ub){
mid=(lb+ub)/2;
//spliting into 2 arts**
MergeElements(arr,lb,mid);
MergeElements(arr,mid+1,ub);
//merging in sorted order**
MergeArray(arr,lb,mid,ub);
}
}
int main(){
int n;
cout<<"enter the size of the array"<<endl;
cin>>n;
int arr[n];
cout<<"please enter the elements of the array"<<endl;
for(int i=0;i<n;i++){
cout<<"enter the element no."<<i<<endl;
cin>>arr[i];
}
MergeElements(arr,0,n-1);
cout<<"\tSorted Array Elements"<<endl;
for(int i=0;i<n;i++){
cout<<arr[i]<<"\t";
}
return 0;
}
我认为我无法正确获取数组,因为我认为其他所有内容似乎都是正确的,请检查
【问题讨论】:
标签: c++ arrays sorting data-structures mergesort