二分查找
对于一个单调递增的数列,我们可以从头到尾遍历一遍求出所求值的位置,这样的时间复杂度毫无疑问的o(n)的,我们可以对其二分求出所需要的值。二分的写法有很多,根据问题的不同会有不同的写法。所有我们在这里只讲思路。假设这个区间是单调递增的,对于区间[l,r]我们可以找出中间点mid=(r+l)>>1,对中间的值和所需要的值进行比较,如果mid的值大于所求值,r=mid-1。反之,l=mid+1。重复此步,直到找出答案。
单峰函数
如果这个函数拥有唯一的极大值点(极小值点),且在极大值(极小值)的左侧单调递增(递减),极大值(极小值)的右侧单调递减(递增)。我们可以称这种函数是单峰函数。我们也可以称后一种函数是单谷函数。
三分求单峰函数的级值
单峰函数设为f,我们在区间上任取两点r,l。
如果f®<f(l),l和r要么同时处于极大值的右侧,要么位于极大值的两侧。无论是那一种情况极大值点一定在r的左侧。我们可令右侧边界取r。
同理,如果f(l)<f®,我们可令左侧边界取l。
定义域的缩小和l和r的取值有关。时间复杂度是log级别的。
本文深入探讨了二分查找和三分查找算法在单调递增数列和单峰函数中的应用,详细讲解了如何通过调整搜索区间来高效定位目标值,时间复杂度达到log级别。
1604

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



