现在有alist一个排序数组 如: [1, 2, 3, 5, 6, 7] 和一个浮点数v值, 写一个函数 判断v值属于alist的哪个区间,返回下标
时间: 2023-06-25 15:01:56 浏览: 144
以下是一个简单的 Python 函数实现:
```python
def find_interval(alist, v):
"""
Find the interval in alist that v belongs to.
Args:
alist (list): A sorted list of numbers.
v (float): The target number to find its interval.
Returns:
int: The index of the interval in alist that v belongs to.
If v is smaller than the first element in alist, return 0.
If v is larger than the last element in alist, return len(alist)-1.
"""
if v < alist[0]:
return 0
if v > alist[-1]:
return len(alist) - 1
left, right = 0, len(alist) - 1
while left <= right:
mid = (left + right) // 2
if alist[mid] <= v < alist[mid+1]:
return mid
elif alist[mid] < v:
left = mid + 1
else:
right = mid - 1
```
该函数首先检查 v 是否小于 alist 的第一个元素或大于最后一个元素,如果是,则返回 0 或 len(alist)-1。否则,使用二分查找算法在 alist 中查找 v 所属的区间,并返回该区间的下标。注意,如果 v 恰好等于某个元素,那么该元素所在的区间被视为 v 所属的区间。
阅读全文