python 二分查找

Posted shunyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 二分查找相关的知识,希望对你有一定的参考价值。

二分查找要求对象必须有序,其基本原理如下:

  • .从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;
  • 2.如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。
  • 3.如果在某一步骤数组为空,则代表找不到。

二分查找也成为折半查找,算法每一次比较都使搜索范围缩小一半, 其时间复杂度为 O(logn)。

未使用递归:

 1 a = [1,5,-9,2,8]
 2 
 3 low = 0
 4 high = len(a)-1
 5 def mid_sort(array,value):      #value  要找的值
 6 
 7     while(low < high):
 8         mid = (low+high)/2
 9         
10         if array[mid] < value :
11             low = mid+1
12         elif array[mid] > value:
13             high = mid-1
14         else:
15             return mid
16 
17     return None

 

使用递归:

 1 def binary_search(array,value,low,high):
 2     if low>high:
 3         return None
 4     mid = (low + high)/2
 5     if array[mid] > value:
 6         return binary_search(array,value,low,mid-1)
 7     elif array[mid] < value:
 8         return binary_search(array,value,mid+1,high)
 9     else:
10         return mid

 

 

性能;

非递归比递归 效率高

 

以上是关于python 二分查找的主要内容,如果未能解决你的问题,请参考以下文章

python实现二分叉查找

python实现二分查找与冒泡排序

python实现二分查找

Python 算法之二分查找

python数据结构与算法第十四天二分查找

0518Python基础-内置函数-二分查找