什么是快速选择及案例分析

什么是快速选择?

我们这里指的选择是指找出序列第 K 大或者第 K 小的数据。

对于这类问题,如果想用旧知识解决。那完全可以先将数据进行排序,比如使用上文中的快速排序算法。那自然很容易从有序数据中找出第 K 的数据。

案例分析:对快排的剪枝

如果你对上文的快排原理已经了解了,那么会发现对于快速选择这个问题,使用完整的快排完全是大材小用的。因为很多数据完全是不用再花费精力去排序的。

再拿上述 4, 1, 6, 9, 8, 5, 2, 3, 0, 7 举例,若此时要获得第 5 小的数据(k=5, 从0开始计)。

我们只要在递归树中不断地判断,是否满足了 5 个数据相对有序即可。

最终我们会发现在我们找到 k=5 时,左右两侧都可能还是乱序的。即使在整体乱序下我们还是找到了第 k 的数据,并避免很多递归和排序,可见整个算法跑下来的速度肯定不会大于将整体数据进行排序。

相关推荐
伟大的车尔尼5 小时前
贪心的概念
数据结构·算法·贪心
AI情绪识别开源6 小时前
检信AI高一分班分科智选评估系统 v2.0测试报告
开发语言·数据结构·人工智能·科技
CoderYanger6 小时前
A.每日一题:输入单词需要的最少按键次数 Ⅰ+Ⅱ
java·数据结构·算法·leetcode·面试
雪碧聊技术8 小时前
KMP算法详解
数据结构
positive_zpc10 小时前
进阶数据结构图——关键路径(四)
数据结构·图论·关键路径
孙克旭_11 小时前
单链表进阶实操:5 道常考面试题详细解析【Java 实现】
java·开发语言·数据结构·单链表
Chester_199912 小时前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
旖旎夜光12 小时前
LeetCode 238:除自身以外数组的乘积(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
一条大祥脚12 小时前
26杭电暑期第八场(后半)快读|快写|tarjan|路径DP|mex转化|扫描线|前缀和|二分图
数据结构·算法·tarjan·杭电多校·强联通分量·动态规划dp
Chester_199921 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯