这是算法设计书地171页上的题:假设有n个项的数组A,数组的每个元素都不相同,该数组序列是单峰的:对于某个在0与n-1之间的下标p,
数组项的值增加直到A中的位置p,然后剩下的元素减少直到位置n,
要求:尽量读很少的元素,就是找到这个顶峰元素p在哪一个位置,下面是具体的递归实现
ublic class FindMaxIndex {
public static int findMaxIndex(int arr[], int begin, int end) {
int center = (begin + end) / 2;
//如果中间元素处于上坡的位置
if (arr[center] > arr[center - 1] && arr[center] < arr[center + 1]) {
begin = center + 1;
return findMaxIndex(arr, begin, end);
}//如果处于下坡的位置
else if (arr[center] < arr[center - 1] && arr[center] > arr[center + 1]) {
end = center -1;
return findMaxIndex(arr, begin, end);
} else {//此种情况是当arr[center-1]
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?