• 【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)
  • 相关阅读:
    Spring学习(一)初识Spring
    搜索引擎学习(七)解析查询
    搜索引擎学习(六)Query的子类查询
    Oracle学习(十四)分表分区
    Oracle学习(十三)优化专题
    Python学习————流程控制之while循环
    Python学习————深浅copy
    Python学习————while循环作业
    Python学习————运算符
    Python学习————与用户交互
  • 原文地址:https://www.cnblogs.com/imyuezhang/p/5987596.html
Copyright © 2020-2023  润新知