c++的代码
时间: 2023-08-24 21:15:03 浏览: 52
下面是基于快速选择算法的 C++ 代码实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
int quick_select(vector<int>& nums, int k) {
if (k < 1 || k > nums.size()) {
return -1; // 输入的 k 不合法,返回 -1 表示查找失败
}
int pivot = nums[0];
vector<int> left, mid, right;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] < pivot) {
left.push_back(nums[i]);
} else if (nums[i] == pivot) {
mid.push_back(nums[i]);
} else {
right.push_back(nums[i]);
}
}
if (k <= right.size()) {
return quick_select(right, k);
} else if (k - right.size() <= mid.size()) {
return mid[0];
} else {
return quick_select(left, k - right.size() - mid.size());
}
}
int main() {
vector<int> nums = {3, 6, 9, 2, 8, 5};
int k = 2;
cout << quick_select(nums, k) << endl;
return 0;
}
```
需要注意的是,如果输入的 k 不合法(即小于1或大于给定的数列长度),则返回 -1 表示查找失败。