• 【Python】二分查找算法


    二分查找:
    在一段数字内,找到中间值,判断要找的值和中间值大小的比较。
    如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找。
    如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找。
    直到找到我们希望的数字。

     1 def search_data(data,data_find):
     2     # 中间值的索引号的定义:数组长度/2
     3     mid = int(len(data)/2)
     4     # 判断从1开始的数字数组内查找
     5     if data[mid] >= 1:
     6         # 如果我们要找的值(data_find)比中间值(data[mid])小
     7         if data[mid] > data_find:
     8             print("你要找的数字比中间值[%s]小..." % data[mid])
     9             # 在中间值(data[mid])的左侧继续查找,在此函数中继续循环
    10             search_data(data[:mid],data_find)
    11         # 如果我们要找的值(data_find)比中间值(data[mid])大
    12         elif data[mid] < data_find:
    13             print("你要找的数字比中间值[%s]大..." % data[mid])
    14             # 在中间值(data[mid])的右侧继续查找,在此函数中继续循环
    15             search_data(data[mid:],data_find)
    16         else:
    17             # 如果我们要找的值(data_find)既不比中间值(data[mid])大,也不比中间值(data[mid])小,则就是它
    18             print("这就是你要找的[%s]!" % data[mid])
    19     else:
    20         print("不好意思,没有找到你要的值...")
    21 
    22 if __name__ == '__main__':
    23     # 创建一个1到6000万的连续数字数组
    24     data = list(range(60000000))
    25     # 调用函数找到95938的值
    26     search_data(data,95938)
  • 相关阅读:
    2018,10,19模拟赛
    培训期间做题整理(部分)
    纪中2018暑假培训day5提高b组改题记录
    纪中2018暑假培训day7提高b组改题记录
    纪中2018暑假培训day3提高a组改题记录(混有部分b组)
    纪中2018暑假培训day1提高b组改题记录
    python中的‘/’和'//'
    对于python中的join函数和+
    python中的casefold函数和lower()函数区别
    F
  • 原文地址:https://www.cnblogs.com/BIGMOM/p/5987596.html
Copyright © 2020-2023  润新知