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

什么是快速选择?

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

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

案例分析:对快排的剪枝

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

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

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

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

相关推荐
奋发向前wcx15 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
ChaoZiLL19 小时前
我的数据结构4-栈和队列
数据结构
miller-tsunami20 小时前
顺序表相关知识点
数据结构·顺序表
华玥作者1 天前
uniapp 万条数据不卡顿:我写了个虚拟列表组件 hy-list,原生支持瀑布流
数据结构·uni-app·list·vue3
2401_841495641 天前
【数据结构】B*树
数据结构·c++·b树·算法·删除·插入·三分分裂
晚笙coding1 天前
LeetCode 108:将有序数组转换为二叉搜索树 —— 从数组到平衡二叉树的递归构造
数据结构·算法·leetcode
不如语冰1 天前
AI大模型入门-模块导入import
数据结构·人工智能·pytorch·python
岑梓铭1 天前
《考研408数据结构》第七章(7.1 查找:顺序查找、折半查找、分块查找)复习笔记
数据结构·笔记·考研·408·ds·查找
壹号用户1 天前
c++入门之list了解及使用
数据结构·list
来一碗刘肉面1 天前
什么是双端队列
数据结构·链表