zoukankan      html  css  js  c++  java
  • 01.二分查找

    1.条件

    不是所有的数据类型都可以应用二分查找法,需要满足以下条件
    • 是一个有序序列(索引数组)
    • 已经排序好的序列

    2.查找原理

    在一个有序序列中查找一个指定的数,首先和这个序列的中间数相比,如果相等就找到返回。如果你这个中间数小,即在序列左边找,如果比中间数大就从右边查找,直到找到或未找到返回。

    3.实现代码

     1 #Python 二分查找
     2 def binary_search(list,item):
     3     low = 0
     4     hight = len(list) - 1
     5 
     6     while low <= hight:
     7         mid = (low + hight) // 2
     8         gess = list[mid]
     9         if gess == item:
    10             return mid
    11         elif gess > item:
    12             hight = mid - 1
    13         else:
    14             low = mid + 1
    15     return None
    16 
    17 res = binary_search([1,4,6,8,9],9)
    18 print(res

    运行结果:

    1 #运行结果
    2 4
     
     
  • 相关阅读:
    poj 1466 Girls and Boys
    poj 1486 Sorting Slides
    poj 2112 Optimal Milking
    poj 1274 The Perfect Stall
    SHoj 420 购买装备
    poj 2987 Firing
    SHoj A序列
    FOJ Problem 2271 X
    XidianOJ 1028 数字工程
    XidianOJ 1030 三数和
  • 原文地址:https://www.cnblogs.com/kadycui/p/9240206.html
Copyright © 2011-2022 走看看