<分区>

二分查找是一种高效的 —其复杂度估计为 O(log2(n)),而传统的顺序搜索为 O(n)。这意味着,例如,对于一个包含 1024 个元素的数组,在最坏的情况下,当所需元素不在数组中时,线性搜索将处理所有 1024 个元素。二进制搜索足以处理 \(log_2(1024) = 10\) 元素。这个结果的实现是因为在循环的第一步之后,搜索区域缩小到 512 个元素,在第二步之后搜索区域缩小到 512 个元素。最多 256 等

该算法的缺点是需要数据排序,以及在恒定(与数据量无关)时间内访问任何数据元素的能力。因此,该算法不适用于无序数组和任何基于链表的数据结构。


实施
再见(右–左> 1 // 只要右边框在左边的右边
数控
  中间 =(左 + 右)/< /span> 2; // 搜索区域中间
  如果 (A[middle] >= b)那么=中间; // 移动右边框
  否则
    左边 = 中间; // 否则移动左边框
抄送
如果(A[右] == X)那么
  正确的输出;
否则
  输出-1

其中:
A - 源数组,
N - 数组大小,
X - 所需的数字。