C++ 为什么在为数组输入并输入mergesort函数后会出现运行时错误? #包括 使用名称空间std; 无效合并(int*lArray、int-nL、int*rArray、int-nR、int*Array){ int i,j,k; i=0;j=0;k=0; //i、 j,k是lArray、rArray和Array的指针 //nL和nR分别是lArray和rArray中元素的数量 虽然(i
我对mergesort函数做了一些更改。现在,您的程序在控制台上显示输出,但输出未排序。我认为存在数组索引问题,可能是分段错误。输出中也存在逻辑错误C++ 为什么在为数组输入并输入mergesort函数后会出现运行时错误? #包括 使用名称空间std; 无效合并(int*lArray、int-nL、int*rArray、int-nR、int*Array){ int i,j,k; i=0;j=0;k=0; //i、 j,k是lArray、rArray和Array的指针 //nL和nR分别是lArray和rArray中元素的数量 虽然(i,c++,merge,mergesort,C++,Merge,Mergesort,我对mergesort函数做了一些更改。现在,您的程序在控制台上显示输出,但输出未排序。我认为存在数组索引问题,可能是分段错误。输出中也存在逻辑错误 #include<iostream> using namespace std; void merge(int *lArray, int nL, int *rArray, int nR, int *Array){ int i,j,k; i=0; j=0; k=0; //i,j,k are pointers for lArray
#include<iostream>
using namespace std;
void merge(int *lArray, int nL, int *rArray, int nR, int *Array){
int i,j,k;
i=0; j=0; k=0;
//i,j,k are pointers for lArray, rArray & Array
// nL & nR are numbr of elements in lArray & rArray respectively
while(i<nL && j<nR)
{
if(lArray[i] <= rArray[j])
Array[k++] = lArray[i++];
else
Array[k++] = rArray[j++];
}
while(i<nL)
Array[k++] = lArray[i++];
while(i<nR)
Array[k++] = rArray[j++];
return;
}
void mergesort(int *Array, int n)
{
if (n<2)
return;
int mid = n/2;
int lArray[mid];
int rArray[n-mid];
for (int i=0;i<mid;i++)
lArray[i] = Array[i];
for (int i=mid;i<n;i++)
rArray[i-mid] = Array[i];
mergesort(lArray, mid);
mergesort(rArray,n-mid);
merge(lArray,mid,rArray,n-mid,Array);
delete(lArray);
delete(rArray);
}
int main()
{
int Array[10];
int n = 10;
cout<< "Enter Values :" << " ";
for(int i=0; i<10; i++)
cin>>Array[i];
mergesort(Array,n);
for(int i=0; i<n; i++)
cout<<Array[i]<< " ";
return 0;
}
#包括
使用名称空间std;
无效合并(int*lArray、int-nL、int*rArray、int-nR、int*Array)
{
int i,j,k;
i=0;j=0;k=0;
//i、 j,k是lArray、rArray和Array的指针
//nL和nR分别是lArray和rArray中元素的数量
while(控制台刚刚崩溃——程序突然结束?没有错误?请缩进代码一致,硬编码使排序算法崩溃的值,并提供精确的错误信息。第19行:应该是while(j
#include<iostream>
using namespace std;
void merge(int *lArray, int nL, int *rArray, int nR, int *Array)
{
int i,j,k;
i=0; j=0; k=0;
//i,j,k are pointers for lArray, rArray & Array
// nL & nR are numbr of elements in lArray & rArray respectively
while(i<nL && j<nR)
{
if(lArray[i] <= rArray[j])
Array[k++] = lArray[i++];
else
Array[k++] = rArray[j++];
}
while(i<nL)
Array[k++] = lArray[i++];
while(i<nR)
Array[k++] = rArray[j++];
return;
}
void mergesort(int *Array, int n)
{
if(n>2)
{
int mid = (n+1)/2;
int lArray[mid];
int rArray[n-mid];
for (int i=0;i<mid;i++)
lArray[i] = Array[i];
for (int i=mid;i<n;i++)
rArray[i-mid] = Array[i];
mergesort(lArray, mid);
mergesort(rArray,n-mid);
merge(lArray,mid,rArray,n-mid,Array);
delete(lArray);
delete(rArray);
}
}
int main()
{
int Array[10];
int n = 10;
cout<< "Enter Values :" << " ";
for(int i=0; i<10; i++)
cin>>Array[i];
mergesort(Array,n);
for(int i=0; i<10; i++)
cout<<Array[i]<< " ";
return 0;
}