p1923不是在二分时只寻找一边吗?
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n4, k4;
vector<int> vec2;
vector<int> p1923(int left, int right)
{
if (left == right) {
cout << vec2[left] << endl;
exit(0);
}
int i, j, pivot;
i = left, j = right, pivot = vec2[left];
while (i < j)
{
while (vec2[j] >= pivot && i < j) j--;
while (vec2[i] <= pivot && i < j) i++;
if (i < j)
{
swap(vec2[i], vec2[j]);
}
}
swap(vec2[i], vec2[left]);
if (i < k4) p1923(i + 1, right);
else if(i > k4) p1923(left, i - 1);
else {
cout << vec2[i] << endl;
exit(0);
}
return vec2;
}
int main()
{
cin >> n4 >> k4;
for (int i = 0; i < n4; i++)
{
int t;
cin >> t;
vec2.push_back(t);
}
p1923(0, vec2.size() - 1);
return 0;
}