
快速选择算法
发布日期:2021-05-14 17:54:29
浏览次数:17
分类:博客文章
本文共 768 字,大约阅读时间需要 2 分钟。
快速选择算法
给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。
输入格式
第一行包含两个整数 n 和 k。
第二行包含 n 个整数(所有整数均在 1∼109范围内),表示整数数列。
输出格式
输出一个整数,表示数列的第 k 小数。
数据范围
1≤n≤100000
1≤k≤n输入样例:
5 32 4 1 5 3
输出样例:
3
题解:仿照快速排序的模板
#include//万能头文件using namespace std;const int N = 100010;int n, k;int q[N];int quick_sort(int l, int r, int k) { if (l == r) { return q[l]; } int x = q[l], i = l - 1, j = r + 1; while (i < j) { while (q[++i] < x); while (q[--j] > x); if (i < j) { swap(q[i], q[j]); } } int sl = j - l + 1; // 算出左边的长度 if (k <= sl) { return quick_sort(l, j, k); } return quick_sort(j + 1, r, k - sl);}int main() { cin>>n>>k; for (int i = 0; i < n; i++) { cin>>q[i]; } cout<
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月01日 12时38分19秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
页面置换算法
2019-03-11
文件系统的层次结构
2019-03-11
减少磁盘延迟时间的方法
2019-03-11
vue(渐进式前端框架)
2019-03-11
权值初始化和与损失函数
2019-03-11
案例讨论
2019-03-11
算法的伪码表示
2019-03-11
主定理的应用
2019-03-11
最优装载问题
2019-03-11
课程总结
2019-03-11
CMake的主体框架
2019-03-11
软件工程应用
2019-03-11
数据科学
2019-03-11
函数与高级变量
2019-03-11
注册页面案例
2019-03-11
np.bincount(x)的简单解释
2019-03-11
LeetCode Top-100 T22-括号生成
2019-03-11
vscode设置eslint保存文件时自动修复eslint错误
2019-03-11
JAVA 多线程
2019-03-11
牛客-链表中环的入口节点(Java)
2019-03-11