二分查找、折半查找

二分查找 (用来查找列表中元素是否存在)

  • 二分查找也称折半查找
  • 方式一(递归)
# 思路:
# 1.在函数中传入有序列表和要查找的数字
# 2.把整个列表进行切割(min=len(alist)//2),利用索引找到中间的值(alist[min])
# 3.把中间的值和和要查找的元素进行对比,如果大于要查找的元素使用递归再次进行切割alist[:min]
# 4.反之[min+1:]
# 5.如果列表为空了则证明列表中没有此数字

def func(alist,itme):
    if len(alist)==0:
        return False
    mid=len(alist)//2
    if alist[mid]==itme:
        return True
    else:
        if alist[mid]>itme:
            return func(alist[:mid],itme)
        else:
            return func(alist[mid+1:],itme)

alist=[1,2,3,4,5,6,7,8,9,10,99,555,666,777,888,999]
print(func(alist,888))
  • 方式二(循环)
 def func(alist,item):
     first=0
     last=len(alist)-1
     while first<=last:
         mid=(first+last)//2
         if alist[mid]==item:
             return True
         else:
             if alist[mid]<item:
                 first=mid+1
             else:
                 last=mid-1
     else:
         return False
 
 alist=[1,2,3,4,5,6,7,8,9,10,99,555,666,777,888]
 print(func(alist,999))
posted @ 2021-06-03 15:40  刘家小仙女  阅读(192)  评论(0编辑  收藏  举报