二分法查找算法

二分法查找

步骤:(设置查找的序列为L=[1,2,3,5,10,20,30],要查找的数字是20)

  1. 确定该期间的中间位置K,设最低位索引为low,最高位high
  2. 将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:

             1)array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]
        2)array[k]<T 类似上面查找区间为array[k+1,……,high]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可

 

python代码如下:

 1 # -*- coding: utf-8 -*-
 2 """
 3 -------------------------------------------------
 4    File Name:     1
 5    Description :
 6    Author :       dcl
 7    date:          2018/1/31
 8 -------------------------------------------------
 9    Change Activity:
10                    2018/1/31:
11 -------------------------------------------------
12 """
13 
14 
15 def binarySearch(nums , key):
16     low = 0
17     high = len(nums) - 1
18 
19     while low < high:
20         mid = (high + low) / 2
21         if nums[mid] < key:
22             low = mid + 1
23         elif nums[mid] > key:
24             high = mid - 1
25         else:
26             return [mid,nums[mid]]
27 
28 if __name__ == "__main__":
29     print binarySearch([1,2,3,4,33,44,45,65],45)

 

posted on 2018-01-31 22:14  成风123  阅读(436)  评论(0)    收藏  举报

导航