有一个数组,先递增后递减,返回峰值位置
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