zoukankan      html  css  js  c++  java
  • 【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)
  • 相关阅读:
    web移动开发最佳实践之js篇
    ubuntu升级到12.10
    C语言生成随机数
    终于签约了
    这个2012不寻常
    awk练习(实战)
    数据恢复的教训
    职业发展的一些随想
    diy谷蜂Y5刷机包基于官方0207稳定版
    web移动开发最佳实践之html篇
  • 原文地址:https://www.cnblogs.com/BIGMOM/p/5987596.html
Copyright © 2011-2022 走看看