在乱序数组中寻找他第k位小的元素
1.将数组排序后选取第k位小元素 O(nlogn)
2.特定分治策略

图片来自https://www.jianshu.com/p/2759d3c21bd9
将数组每五个划分一组,最后一组如果不够就只有那些数,每组都是有序的 O(n) 为什么是五个五个分,这是算法设计者实验得出最佳的方法
用每组的中位数来进行组之间的排序,也就是在所有的中间值中,递归调用本算法(求的k位改为中间位),挑出中间值中的中间值mm。
按照mm对数组进行划分,比mm小,比mm大,和mm相同的,第k小元素在哪块区域 O(n)
对该区域再次递归调用本算法 当数组总数小于某个阈值的时候,可以直接用快速排序.
根据网上其他人博客的计算如下:
T(n) <= T(n/5) + T(7n/10 + 6) + O(n)
给出代码没有用到快速排序
https://github.com/zhangweifeng66/algorithms
本文介绍了一种在乱序数组中寻找第k位小元素的高效算法,避免了传统排序方法的高时间复杂度。通过将数组每五个元素划分为一组并找到每组的中位数,再对这些中位数进行排序,最后使用递归策略确定目标元素位置,实现O(n)的时间复杂度。
450

被折叠的 条评论
为什么被折叠?



