所以这是我的代码。它告诉我,当我在kSmall中调用它时,没有声明分区......有什么想法吗?
int kSmall(int A[], int k, int low, int high){
int pivot = A[(low+high)/2];
int idx = partition(A, pivot, low, high);
if(idx-low+1>k)
kSmall(A,k,low,idx-1);
else if(idx-low+1<k)
kSmall(A,k,idx+1,high);
else
return A[idx];
}
int partition(int A[], int p, int low, int high){
int temp;
int left = low;
int right = high;
while (left < right){
while (A[left]<p)
left++;
while (A[right]>p)
right--;
if (left<right){
temp = A[left];
A[left] = A[right];
A[right] = temp;
}
}
return left;
}
确切的错误是:main.cpp:36:43:错误:'partFunc'未在此范围内声明
答案 0 :(得分:0)
如果在cpp文件中的kSmall()之前定义partition(),则将解决main.cpp问题。
答案 1 :(得分:0)
您必须在调用它的函数之前声明函数partition()
。
只需添加以下行:
int partition(int[], int, int , int );
在kSmall
之前。这是因为kSmall()调用partition(),它会产生错误,因为之前没有partition()函数,所以你可以在它之前定义函数,或者只是提供一个原型。