利用面向对象的方式编写二分法查找
要求输入一个列表,利用二分法查找列表中的数字
class Find_num():
def __init__(self,num1,list1):
self.num1=num1
self.list1=list1
def find(self):
self.list1 = self.list1.split() # 将字符串转化为列表
self.list1 = [int(x) for x in self.list1] # 将列表中的字符串转化为int类型便于大小比较
i=0
j=len(self.list1)
while i <= j:
mid = (i + j) // 2 # 计算中间元素索引
if self.list1[mid] == self.num1: # 中间元素比较
print('找到了,值:',self.num1)
break
else:
if self.num1 < self.list1[mid]:
j = mid - 1 # 向左折半
else:
i = mid + 1 # 向右折半
if i > j:
print('未找到')
l1=str(input('请输入一个升序列表(数字间用空格隔开):'))
n1=int(input('请输入所需要查询的数字:'))
f1=Find_num(n1,l1)
f1.find()
结果展示: