用while查找局部最高点
时间: 2024-11-15 21:21:42 浏览: 6
在Python中,使用while循环遍历数组也能找到局部最高点。这种方法类似于线性搜索,但我们可以从数组的中心开始并向两边扩展,直到找到满足条件的峰值。以下是使用while循环实现的一个简单例子:
```python
def find_peaks_while(arr):
length = len(arr)
left, right = 0, length - 1
i = length // 2 # 首先检查中间位置
peaks = []
while left < right:
if i == 0 or arr[i] > arr[i-1]: # 如果当前值大于左邻或等于第一项,则是峰值
peak_index = i
while i >= left and (i == 0 or arr[i] > arr[i-1]): # 往左扩展确认是否有更高的值
i -= 1
while i < right and (i == length - 1 or arr[i] > arr[i+1]): # 往右扩展确认是否有更高的值
i += 1
peaks.append(peak_index)
else: # 当前值不是峰值,向两边移动
if arr[i] < arr[i-1]:
left = i + 1
else:
right = i - 1
i = (left + right) // 2 # 更新搜索范围的中心
return peaks
# 示例用法
arr = [1, 3, 2, 5, 4, 6, 8, 7]
peaks = find_peaks_while(arr)
print("局部最高点索引:", peaks)
阅读全文