# 冒泡排序
# lis=[4,2,5,17,11,22,33,35,27]
# for a in range(len(lis)): # 记录内部排序的次数,有几个数它就要循环下面的操作几次
# i=0
# while i< len(lis)-1 : # 把最大值移动到右端
# if lis[i] >lis[i+1]: # 比较,
# lis[i],lis[i+1]=lis[i+1],lis[i] # 交换
# i=i+1
# print(lis)
# 二分法的第一种方法 二分法每次能够排除掉⼀半的数据. 查找的效率非常⾼. 但是局限性比较⼤.只能查找的有序必须是有序序列
# lis=[1,2,19,22,44,55,65,66,77,88,89,92]
# n=44
# left = 0
# count=1
# right = len(lis) - 1
# while right >= left:
# middle=(left+right)//2
# if n > lis[middle]:
# left=middle+1
# elif n < lis[middle]:
# right=middle-1
# else:
# print(count) # 看他查找了几次
# print('存在')
# print(middle)
# break
# count = count + 1
# else:
# print('不存在')
# 第二种方法
# lis=[1,2,19,22,44,55,65,66,77,88,89,92]
# def func (n,lift,right):
#
# middle = (lift + right) // 2
#
# if right<=lift:
# return -1
# if n>lis[middle]:
# lift=lift+1
# elif n<lis[middle]:
# right=right-1
# else:
# return middle
# return func(n,lift,right) # 这个必须要写个ruturn ,来接收第一次调用函数的返回值,不然就会打印为None
# print(func(22,0,len(lis)-1))
# 第三种方法 这种方法只能告诉你 找没找到 ,不能告诉你位置在哪里,因为这个列表被切割了,无法再定位你的位置
# lis=[1,2,19,22,44,55,65,66,77,88,89,92]
# def func (lis,n):
# lift=0
# right=len(lis)-1
# middle=(lift+right)//2
# if right<1:
# return -1
# if n > lis[middle] :
# lis=lis[middle+1:]
# elif n < lis[middle] :
# lis=lis[:right-1]
# else:
# print('找到了')
# return
# return func (lis,n)
# func(lis,77)