问题出在写快速排序算法的时候,被调用函数放在了调用函数的后面,而刚好被调用函数的函数名称是一个系统函数,发生了实参与形参不匹配的情况。
由于报错信息莫名其妙,系统函数的形参名字与自己写的函数形参很不一样,所以找了半天的bug。
养成良好的编程习惯很重要。
解决办法:把被调用函数放在调用函数前面即可,或者在调用函数前面增加被调用函数的声明。
源代码如下:
/* 快速排序,冒泡排序的进阶版 */
void sortQuick(int a[], int low,int high)
{
int pivot;//基准
if (low < high)
{
pivot = partition(a, low, high);
sortQuick(a, low, pivot - 1);
sortQuick(a, pivot + 1, high);
}
}
void swap(int a[], int i, int j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
int partition(int a[], int low, int high)
{
int pivot = a[low];
while (low < high)
{
while (low < high && a[low] <= pivot)
{
low++;
}
swap(a, low, high);
while (low <high && a[high] >= pivot)
{
high--;
}
swap(a, low, high);
}
return low;
}
报错信息如下:错误 1 error C2782: “_FwdIt std::partition(_FwdIt,_FwdIt,_Pr)”: 模板 参数“_FwdIt”不明确 f:\2017-8\9 排序\9 排序\main.cpp 56 1 9 排序
2017-9-11 0:02