# 二分查找

def erfen(alist,item):
  # 构造初始下标和结束下标
  first = 0
  last = len(alist)-1
  # 构造循环比较条件
  while first <= last:
    #构造中间值下标
    mid = (first+last)//2
     if item == alist[mid]:
      return True,alist.index(item)
    else:
    # 如果说查询的值大于中间值的的话
      if item>alist[mid]:
                     first = mid+1
           else:
                     last = mid - 1
           return False

 

 

迭代查询

# 通过迭代来查询

def fun(alist,item):

  if len(alist) == 0:
    return False
  else:
    mid = len(alist) // 2 #获取中间值的下标
    if item == alist[mid]:
      return True,item
    elif item < alist[mid]: # 如果查找的数小于中间值
      return fun(alist[:mid],item) #从开头到中间值查询 [:mid]是中间值66往前得数
    else:
      return fun(alist[mid+1:],item) # 否则从中间值下一个数到结尾


print(fun([-22,-11,0,11,22,33,44,55,57,66,72,81,96,123456],44))

 

 

# 冒泡排序
def func(alist):
# x就是 1 到 传过来的这个参数的长度总值
for x in range(1,len(alist)):
# i就是传过来的列表长度 -去x
for i in range(0,len(alist)-x):
# 如果过下标i 小于i+1
if alist[i] > alist[i+1]:
# name下标i 就和下标i+1 互换位置
alist[i],alist[i+1] = alist[i+1],alist[i]
# 返回重组后的列表
return alist



# 选择排序
def func(alist):
# x就是1到传过来的这个参数的总长度
for x in range(0,len(alist)):

# min_num 就等于每次循环的小标对应数字
min_num = alist[x]

# 循环小标x+1 到所有下标长度
for i in range(x+1,len(alist)):
# 如果下标i的参数大于min_num
if alist[i] < min_num:
# 互换位置(参数互换)
alist[i],min_num = min_num,alist[i]
alist[x] = min_num
return alist

print(func([1,55,22,66,44,22,88]))

 

 

posted on 2020-12-16 19:16  须臾先生  阅读(90)  评论(0编辑  收藏  举报