由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 我写的这个C++错在哪里?
相关主题
Segmentation fault 11 C++一道c++的考古题
C++ func overload questionc++标准函数传递一问
引用的几个基本问题,有点糊涂C++ 的 问题
请问c++为什么会编译失败?请教如何使用qsort() to sort string.
const char *p, is it ok to change p[1] ?segfault
C++ optimization questiontemplate
超牛的debugQuestion about type conversion (转载)
Segmentation fault想读双学位 求意见 (转载)
相关话题的讨论汇总
话题: int话题: mergesort话题: const话题: merge话题: void
进入Programming版参与讨论
1 (共1页)
x******a
发帖数: 6336
1
comiple的时候提示”Segmentation fault: 11“
void merge(int a[], int const p, int const q, int const r)
{
int n=q-p;
int m=r-q;
int L[n+1];
int R[m+1];
//copy the left part
for(int i=0; i {
L[i]=a[p+i];
}
//copy the right array
for(int j=0; j {
R[j]=a[q+j];
}
int i=0;
int j=0;
while( i {
if(L[i] {
a[i+j]=L[j];
i++;
}
else
{
a[i+j]=R[j];
j++;
}
}

if(i==n)
{
for(int l=j; l {
a[n+l]=R[l];
}
}
else
{
for(int l=i; l {
a[n+l]=L[l];
}
}
}
void Mergesort(int a[], int p, int r)
{
if(p {
int q=(p+r)/2;
Mergesort(a, p, q);
Mergesort(a, q, r);
merge(a, p, q, r);
}
}
X****r
发帖数: 3557
2
Are you sure you got segfault while compiling?
not while running?
BTW, "a[i+j]=L[j];" should be "a[p+i+j]=L[i];", and similar
errors below. "for(int l=j; l "for(int l=j; l
【在 x******a 的大作中提到】
: comiple的时候提示”Segmentation fault: 11“
: void merge(int a[], int const p, int const q, int const r)
: {
: int n=q-p;
: int m=r-q;
: int L[n+1];
: int R[m+1];
: //copy the left part
: for(int i=0; i: {

x******a
发帖数: 6336
3
xentar: yes at running, sorry for the mistake input.

【在 X****r 的大作中提到】
: Are you sure you got segfault while compiling?
: not while running?
: BTW, "a[i+j]=L[j];" should be "a[p+i+j]=L[i];", and similar
: errors below. "for(int l=j; l: "for(int l=j; l
l******d
发帖数: 530
4
99.9999%是数组越界,调起来得很有耐心
p*********t
发帖数: 2690
5
a[]数组到底有多大啊?q比p小怎么办?r比q小怎么办?这些都是要考虑的问题。

【在 x******a 的大作中提到】
: comiple的时候提示”Segmentation fault: 11“
: void merge(int a[], int const p, int const q, int const r)
: {
: int n=q-p;
: int m=r-q;
: int L[n+1];
: int R[m+1];
: //copy the left part
: for(int i=0; i: {

b***i
发帖数: 3043
6
还有,最后if (i==n)
你这两个情况不对称。
循环的时候,一个是i到m,一个是j到n,你都到n,附值回去也不对,
Mergesort里面应该p
【在 x******a 的大作中提到】
: comiple的时候提示”Segmentation fault: 11“
: void merge(int a[], int const p, int const q, int const r)
: {
: int n=q-p;
: int m=r-q;
: int L[n+1];
: int R[m+1];
: //copy the left part
: for(int i=0; i: {

1 (共1页)
进入Programming版参与讨论
相关主题
想读双学位 求意见 (转载)const char *p, is it ok to change p[1] ?
C puzzle 一日一题C++ optimization question
which func will be called?超牛的debug
【讨论】问一道很简单的C++题。。。。 (转载)Segmentation fault
Segmentation fault 11 C++一道c++的考古题
C++ func overload questionc++标准函数传递一问
引用的几个基本问题,有点糊涂C++ 的 问题
请问c++为什么会编译失败?请教如何使用qsort() to sort string.
相关话题的讨论汇总
话题: int话题: mergesort话题: const话题: merge话题: void