话说,选择第N个最小值的问题,从前是有恐惧的.今天看了一下,<<AtA>>关于这个方面的问题,受益匪浅.虽然,刚刚一个很简单的选择问题,我都写了一个小时,但只有自己在实现代码的时候,才知道是不是真的理解了.而且,这个东西不能凭记忆区一句一句写,那样写不出的.
思想就是,不断找出当前数组中一个确切的位置,可知当前位置之前有多少个元素小于等于该位置上的值,进而通过将该位置同目标位置进行比较.不断缩小范围,最终达到目的.
运行时间方面,是 θ(N). 分析过程很数学,我就不班门弄斧了.
贴吧,脑袋有点昏沉的感觉.
本文介绍了一种在期望线性时间内找到数组中第N小元素的算法。通过不断划分数组并利用快速选择的思想,该算法能在θ(N)的时间复杂度内找到目标元素。文章还提供了完整的C语言实现代码。
2812

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



