我正在尝试从教科书中提供的伪代码“翻译”此算法。我的程序一直崩溃,但是我不确定自己的实现哪里出错了。这是图像中的伪代码,其下面是我的代码:
int kSmallFirst (int k, int anArray[], int first, int last) {
int pivotIndex = 0;
if (k < pivotIndex - first + 1)
return kSmallFirst(k, anArray, first, pivotIndex - 1);
else if (k == pivotIndex - first + 1)
return pivotIndex;
else
return kSmallFirst(k - (pivotIndex - first + 1), anArray, pivotIndex + 1, last);
}
int main () {
int i = 0;
int arr[512];
fstream data;
data.open("data.txt");
while (!data.eof()) {
data >> arr[i];
i++;
}
data.close();
cout << kSmallFirst(42, arr, 0, i-1);
return 0;
}
非常感谢你!
问题是:您尚未实现算法的主要部分,该部分在您的书中用斜体字进行了描述:
从“ anArray [first..last]”中选择一个枢轴值“ p”
将“ anArray [first..last]”的值划分为“ p”
这两行不是评论!它们是您要转换为C / C ++的伪代码,以使您的代码能够执行您想要的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句