#include<iostream> #include<vector> using namespace std; int Partition11(vector<int> &data, int start, int end); int KLeastNumbers(vector<int> &data,int k); int main() { vector<int> a; int m; int k; while (cin >> m) { a.push_back(m); if (cin.get() == '\n') break; } cin >> k; cout << KLeastNumbers(a, k); return 0; } int KLeastNumbers(vector<int> &data, int k) { if (data.size()==0|| k <= 0) return -1; int len = data.size(); int index = Partition11(data, 0, len - 1); while (index != k - 1) { if (index > k - 1) index = Partition11(data, 0, index - 1); if (index < k - 1) index = Partition11(data, index + 1, len - 1); } return data[index]; } int Partition11(vector<int> &data, int start, int end) { int index = data[start]; int i = start + 1; int j = end; while (true) { while (data[i] > index) { i++; if (i == end) break; } while (index >= data[j]) { j--; if (j == start) break; } if (i >= j) break; swap(data[i], data[j]); } swap(data[start], data[j]); return j; }
点赞 1

相关推荐

2025-12-11 14:24
门头沟学院 Java
在debug的伊泽瑞...:我说怎么这么眼熟查看图片
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务