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

什么是快速选择?

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

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

案例分析:对快排的剪枝

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

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

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

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

相关推荐
cfm_291427 分钟前
Redis五大基本数据结构底层了解
数据结构·数据库·redis
如竟没有火炬34 分钟前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
Lyyaoo.7 小时前
【数据结构】HashMap底层存储+扩容机制+线程安全【待更新】
数据结构·安全·哈希算法
如何原谅奋力过但无声7 小时前
【灵神高频面试题合集09-13】二叉树、二叉搜索树
数据结构·算法·leetcode
xqqxqxxq7 小时前
树结构技术学习笔记
数据结构·笔记·学习
小欣加油8 小时前
leetcode2161 根据给定数字划分数组
数据结构·c++·算法·leetcode·职场和发展
雨落在了我的手上8 小时前
Java数据结构(四):List的介绍
数据结构
大都督会赢的8 小时前
数据结构(2)--单链表
数据结构
cpp_25018 小时前
P2947 [USACO09MAR] Look Up S
数据结构·c++·算法·题解·单调栈·洛谷
小蒋学算法9 小时前
算法-乘法表中第K小的数-二分
数据结构·算法