原理:二分查找算法(Binary Search)是一种针对有序数组的查找算法。它的原理是通过将查找区间逐渐缩小一半来快速定位要查找的目标值。
应用场景:
首先,将数组按照升序排列。 然后,确定要查找的目标值。
接着,设置两个指针,一个指向数组的起始位置,一个指向数组的结束位置。
在每一次循环中,取指针之间的中间位置的值,并将其与目标值进行比较。
如果中间值等于目标值,返回该中间索引。
如果中间值大于目标值,将右指针移到中间位置的前一个位置。
如果中间值小于目标值,将左指针移到中间位置的后一个位置。
不断重复以上步骤,直到找到目标值或者左指针大于右指针为止。 最后,如果没有找到目标值,返回-
1。 下面是一个示例的PHP代码实现:
- function binarySearch($array, $target) {
- $left = 0;
- $right = count($array) - 1;
- while ($left <= $right) {
- $mid = floor(($left + $right) / 2);
- if ($array[$mid] == $target) {
- return $mid;
- }
- if ($array[$mid] > $target) {
- $right = $mid - 1;
- } else {
- $left = $mid + 1;
- }
- }
- return -1;
- }
- // 示例用法
- $array = [1, 3, 5, 7, 9];
- $target = 7;
- $result = binarySearch($array, $target);
- echo "目标值的索引为:" . $result;