------
## 最终结论
```python
def find_peak(arr, n):
    def binary_search_peak(left, right):
        mid = (left + right) // 2
        
        # Check if mid is a peak
        if (mid == 0 or arr[mid] >= arr[mid - 1]) and (mid == n - 1 or arr[mid] >= arr[mid + 1]):
            return mid
        
        # If the left neighbor is greater, then the peak lies on the left side
        elif mid > 0 and arr[mid - 1] > arr[mid]:
            return binary_search_peak(left, mid - 1)
        
        # If the right neighbor is greater, then the peak lies on the right side
        else:
            return binary_search_peak(mid + 1, right)

    return binary_search_peak(0, n - 1)

# Test cases
assert find_peak([1, 3, 20, 4, 1, 0], 6) == 2
assert find_peak([2, 3, 4, 5, 6], 5) == 4
assert find_peak([8, 9, 11, 12, 14, 15], 6) == 5 
```