这是算法设计书地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]
关注
打赏
热门博文
- Flutter之Widget构建过程详解
- Flutter之Widget 更新机制原理浅析
- 从源码角度分析android事件分发处理机制
- android事件拦截处理机制详解
- android 获取IP地址
- android 获取生肖和星座
- Android TextView setCompoundDrawables设置图片不显示解决方案
- Android Stuido集成LeakCanary编译失败TransformException、transformClassesWithDexBuilderForDebug
- Flutter实战之go_router路由组件入门指南
- HarmonyOS鸿蒙学习笔记(9)Navigator组件实现页面路由跳转