左值查找
在一组数据中查找出 数字x 在这组数据中第一次出现的索引并输出,没有找到则输出-1
查找方式:二分查找
数据前提:一组数据要有序
一组数据:
arr = [2, 3, 3, 3, 5, 7, 9, 11, 13, 15, 17]
测试:
示例1:
x = 3
输出:1
示例2:
x = 4
输出:-1
code:
def half_find_left(arr,x):
l = 0
r = len(arr)-1
mid = 0;
while l<=r:
mid = l + (r-l) // 2
if x == arr[mid]:
r = mid - 1
elif x < arr[mid]:
r = mid - 1
elif x > arr[mid]:
l = mid + 1
if arr[l] == x:
return l
else:
return -1
arr = [2, 3, 3, 3, 5, 7, 9, 11, 13, 15, 17]
x = 3
res = half_find_left(arr, x)
print(res)
右值查找
在一组数据中查找出 数字x 在这组数据中最后一次出现的索引并输出,没有找到则输出-1
查找方式:二分查找
数据前提:一组数据要有序
一组数据:
arr = [2, 3, 3, 3, 5, 7, 9, 11, 13, 15, 17]
测试:
示例1:
x = 3
输出:3
示例2:
x = 6
输出:-1
code:
def half_find_right(arr,x):
l = 0
r = len(arr)-1
mid = 0;
while l<=r:
mid = l + (r-l) // 2
if x == arr[mid]:
l = mid + 1
elif x < arr[mid]:
r = mid - 1
elif x > arr[mid]:
l = mid + 1
if arr[r] == x:
return r
else:
return -1
arr = [2, 3, 3, 3, 5, 7, 9, 11, 13, 15, 17]
x = 3
res = half_find_right(arr, x)
print(res)
结束。
仅学习。