二分查找与排序
数据结构与算法基础#Python全栈#第五阶段#数据结构与算法基础#二分查找与排序约 565 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
顺序查找与二分查找各需要什么前提?
追问 未排序数据、单次查询与多次查询如何影响方案选择?
如何实现升序列表的二分查找?
追问 先约定闭区间或半开区间,再说明中点、边界更新和无解返回值。
如何查找目标值的第一次与最后一次出现位置?
追问 全相等、目标不存在和边界目标如何验证?为什么不能找到后直接返回?
bisect_left 与 bisect_right 有什么区别?
追问 插入位置是否证明目标存在?重复值范围如何根据两者计算?
二分找到位置后向列表插入,整个操作是否仍是 O(log n)?
追问 查找与元素移动成本如何分别计算?
冒泡排序、选择排序与插入排序有什么思路差异?
追问 比较、交换、稳定性和近乎有序数据分别怎样影响表现?
归并排序如何利用分治?
追问 拆分、合并、终止条件和额外空间如何分析?
快速排序的分区与基准值有什么作用?
追问 平均与最坏复杂度为何不同?重复值、随机基准与 Python 递归深度如何影响实现?
排序稳定性如何影响多字段业务排序?
追问 分数降序、姓名升序如何实现?对整个排序设置 reverse 为什么可能不符合要求?
面试手写排序与实际项目选择排序工具有什么区别?
追问
sorted() 与 list.sort() 的接口、输入修改与 Key 计算如何影响选择?二分工具可查阅 Python 官方 bisect 文档,业务排序可参照 Python 官方排序指南。