快速选择算法
发布日期: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<
上一篇:Android项目中接入TensorFlowInferenceInterface
下一篇:RoadDamageDatasetTutorial.ipynb配置环境

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年05月01日 12时38分19秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章