为什么在为数组输入并输入合并排序函数后出现运行时错误
Why am i getting a runtime error after giving input for array and entering mergesort function?
#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;
}
这是一个简单的合并排序程序,但我找不到我出错的地方。运行代码后,我能够输入数组的输入,但在进入合并排序功能后,控制台刚刚崩溃。我在 64 位 Windows 8.1 上使用 CodeBlocks。
我已经对您的合并排序函数进行了一些更改。现在,您的程序在控制台上显示输出,但输出未排序。我认为存在数组索引问题可能是分段错误。输出中也存在逻辑错误。
#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;
}
相关文章:
- 通过 ssh 发送参数.是否有非阻塞输入函数?
- 将int输入函数,将int输入开关,然后更改int的值
- 不能将类中的输入函数与带参数的函数分开
- "cin.get"停止了另一个输入函数,如"cin"..C++
- 模板函数中的错误以获取来自C 输入函数的参数类型
- 两个输入函数的 T(n) 运行时
- 指针在输入函数时丢失值
- (C++)对文件输入函数的递归调用
- 在 Linux 上使用 C 中的输入函数,无需按回车键
- 我在输入函数上做错了什么
- 简单的c++输入函数
- 如何确定未格式化输入函数读取的字符数
- 当我超过第一个 getline() 的输入中的数组大小时,第二个 getline 或其他输入函数不起作用
- 将文件读取到向量中,我的输入函数有什么问题?
- Pthread_create似乎清空了传递给输入函数的参数
- 将具有可变参数的输入函数转换为成员函数
- 直接输入函数
- 如何:捕获输入函数异常的可变包装函数
- 返回命令输入函数
- 是否可以在if语句中使用_getch()或cin或任何输入函数?