每次我运行我的代码时,这是一个简单的c ++合并排序,它会抛出一个找不到Merge func的错误。任何人都可以帮助解决这个问题。实现是这样的:
int A[9];
void mergeSort(int low,int high) {
if (low==high)
return ;
int mid=(high-low)/2;
mergeSort(low, mid);
mergeSort(mid+1,high);
Merge(low,mid,high);
}
void Merge(int l,int m ,int h) {
int i=l;int k= l;int j=mid+1;
int b[9];
while (l<=m &&j<=high) {
if (a[i]<=a[j])
b[k]=a[i];
k++;
b[k]=a[j];
j++;
i++;
}
}
答案 0 :(得分:0)
在函数//if you want to pipe some data to the remote process
process.stdin
.pipe(exec('echo try typing something; cat -', 'ubuntu@my-remote.com'))
.pipe(process.stdout)
Merge
mergeSort
考虑到您忘记在函数体周围指定大括号。
也替换此声明
void Merge(int l,int m ,int h);
的
int mid=(high-low)/2;
答案 1 :(得分:0)
您需要在Merge
之前定义mergeSort
或提前提供函数定义。每个函数只知道在它之前定义或提到的那些函数。
有关其他信息,请参阅此其他问题:Function declaration order matters in c language or am I doing something wrong?
答案 2 :(得分:0)
在Merge
之前编写mergesort
函数或在Merge
之前添加mergesort
的函数声明。
在c ++中调用该函数之前需要函数声明,以便编译器可以理解所需的参数(按顺序)和返回类型是什么。
Merge
的简单函数声明是:
void Merge(int,int,int);
将其声明为mergesort
函数。
编译器只需要知道返回值类型以及调用函数之前所需的参数和顺序。