二分算法

Posted hycstar

tags:

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

## 二分查找
  - 每次查找会将查找范围缩小一半,对于有 n 个元素的序列最多仅需要 log n 次查找
  - 二分查找只能用于有序序列的元素查找

 

## 基本实现

 1 def binary_search(sorted_sequence, item):
 2     """
 3     sorted_sequence: 有序序列
 4     item: 需要查找的元素值
 5     return: 若序列中存在该元素,则返回该元素索引,若不存在,则返回None
 6     """
 7      low = 0
 8      high = len(sorted_sequence) - 1
 9      while low <= high:
10          mid = (low + high) // 2
11          guess = sorted_sequence[mid]
12          if guess == item:
13              return mid
14          if guess > item:
15              high = mid - 1
16          else:
17              low = mid + 1
18      return None

 

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

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

二分法算法代码

「算法笔记」一文摸秃二分查找

片段(Java) | 机试题+算法思路+考点+代码解析 2023

相关简单算法代码(顺序,二分,冒泡,插入,选择等)