# 二分查找 O(㏒2n)
class BinarySearch:
@staticmethod
def rank(key, a):
lo, hi = 0, len(a)+1
while lo <= hi:
mid = lo + (hi - lo) // 2
if key < a[mid]:
hi = mid - 1
elif key > a[mid]:
lo = mid + 1
else:
return mid
return -1
#调用demo
if __name__ == "__main__":
sorted_nums = [1, 5, 8, 9, 10]
print(BinarySearch.rank(9, sorted_nums))