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++ 为什么在为数组输入并输入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

我对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, 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;
    }