二分查找是对一组有序序列进行,将此组序列分为左右两部分,求取中间值,并将中间值与要查找的值进行比较。如果中间值大于要查找的值,就在左部分中进行上一步的比较,以此类推,最终找到所需的值。
# -*- coding: utf-8 -*- def search(arr,n,v): #定义search函数 left = -1 right = n while(left+1 != right): #确定序列的元素个数大于2 mid = left+(right-left)/2 #求出中间值 if(arr[mid] < v): #比较确定中间值的查找范围 left = mid else: right = mid if(right >= n or arr[right] != v): #确保查找的值在序列中 right = -1 print v #输出要查找的值 return right if __name__ == '__main__': arr = [2,3,4,5,6,7,8] #给出有序序列 n = len(arr) #序列长度 ret = search(arr,n,3) print ret #输出查找次数 print arr.index(3) #输出索引