有一个数组,先递增后递减,返回峰值位置

2017-08-23  本文已影响56人  Arya鑫

arr[13]={8,9,10,11,10,9,8,7,6,5,4,3,2,1}

1、逐个遍历

当遇到arr[i-1]<arr[i],arr[i+1]<arr[i],返回i。

2、二分查找

当满足:arr[mid]>arr[mid+1],arr[mid]>arr[mid-1],则返回mid。

当不满足:如果arr[mid+1]>arr[mid],left=mid。

如果arr[mid]<arr[mid+1],right=mid。

3、递归,

返回条件:单调递增时,说明最后一个是峰值 。

                  单调递减时,说明第一个是峰会。 

 递归条件:arr[mid-1]>arr[mid],递归前部分,

                   arr[mid-1]<=arr[mid],递归后部分。


http://blog.csdn.net/beiyeqingteng/article/details/6995092

http://blog.csdn.net/feliciafay/article/details/20586551


上一篇下一篇

猜你喜欢

热点阅读