gpt4 book ai didi

c++ - 递归获取数组中第k小的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:32:18 24 4
gpt4 key购买 nike

我正试图从教科书中提供的伪代码中“翻译”这个算法。虽然我的程序一直在崩溃,但我不确定我的实现哪里出了问题。这是图像中的伪代码,我的代码就在它下面:enter image description here

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;
}

非常感谢!

最佳答案

问题是:您没有实现算法的主要部分,这在您的书中用斜体字体描述:

Choose a pivot value 'p' form 'anArray[first..last]'

Partition the values of 'anArray[first..last]' about 'p'

这两行不是注释!它们是您要转换为 C/C++ 的伪代码,以使您的代码执行您希望它执行的操作。

关于c++ - 递归获取数组中第k小的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26333890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com