js给定一个先增后降的数组,找出其中的最大值
时间: 2024-05-07 22:19:35 浏览: 165
判断数组的最大值
3星 · 编辑精心推荐
可以使用二分查找来解决这个问题。具体步骤如下:
1. 找到数组的中间元素
2. 如果中间元素比它前面的元素大且比它后面的元素大,则中间元素就是最大值
3. 如果中间元素比它前面的元素小,则最大值一定在中间元素的左边,此时在左半边数组中继续查找
4. 如果中间元素比它后面的元素小,则最大值一定在中间元素的右边,此时在右半边数组中继续查找
下面是具体的实现代码:
```javascript
function findMax(arr) {
let left = 0;
let right = arr.length - 1;
while (left < right) {
let mid = Math.floor((left + right) / 2);
if (arr[mid] > arr[mid - 1] && arr[mid] > arr[mid + 1]) {
return arr[mid];
} else if (arr[mid] < arr[mid - 1]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
// 如果left和right相等,则最大值就是该位置的元素
return arr[left];
}
// 示例
let arr = [1, 3, 5, 7, 9, 8, 6, 4, 2];
console.log(findMax(arr)); // 输出 9
```
阅读全文