class Seek:
def __init__(self, list1, num1): # list1传入给定的序列,num1传入需要查找的元素
self.list1 = list1
self.num1 = num1
def selection_find(self):
if self.list1 == 0 or self.num1 == 0: # 如果序列为空,或者数据为0,则不能找到
return '数据不能为空'
self.list1 = [int(self.list1[i]) for i in range(len(self.list1))] # 将遍历字符串列表的每个元素,强制转为int
self.list1.sort() # 进行排序
i = 0 # i是标志位,从第一个元素开始遍历
j = len(self.list1) - 1 # j是最后一个元素,len统计到序列个数,减1后为索引指向最后一个元素
while i <= j:
mid = (i + j) // 2 # 计算中间元素的索引
if self.list1[mid] == self.num1: # 与中间元素进行比较
return '找到元素:', self.num1
else:
if self.num1 < self.list1[mid]: # 向左折半
j = mid - 1
else: # 向右折半
i = mid - 1
if i > j:
return '找不到元素:'
if __name__ == '__main__':
li = list(input('请输入序列:'))
num = int(input('请输入需要查找的数字'))
find1 = Seek(li, num)
print(find1.selection_find())
结果: