二分查找

# -*- coding: utf-8 -*-
# @Time : 2022/3/28 15:20
# @Author : chuqianyu
# @FileName: 二分查找2.py
# @Software: PyCharm
# @Blog :
class Solution:
def search(self, nums: list, target: int) -> int:
# write code here
# binarySearch
kk = Solution.binarySearch(self, nums, 0, len(nums) - 1, target)
return kk


# 暴力求解
# for i in range(len(nums)):
# if target == nums[i]:
# return i
# else:
# return -1

# binarySearch
def binarySearch(self, arr, m, n, x): # m,n为下标,所以n = len(arr)-1
if n >= m:
mid = m + ((n - m) >>1) # 等效为 mid = int(m + (n-m)/2) #int为向下取整
if arr[mid] == x:
return mid
elif arr[mid] > x:
return Solution.binarySearch(self, arr, m, mid - 1, x)
else:
return Solution.binarySearch(self, arr, mid + 1, n, x)
else:
return -1

if __name__ == "__main__":
print(int(3.5)) # 3向下取整
s = Solution()
x = int(input()) # 输入要查找的数
arr = list(map(int, input().strip().split())) # 有序数组
m = 0
n = len(arr) - 1
index = s.search(arr, x)
if index != -1:
print("元素在数组中的索引为 %d" % index)
else:
print("元素不在数组中")