新澳门天天开好彩大全510期
二分查找是一种高效的查找算法,适用于已排序的数组。该算法通过反复将搜索范围减半来查找目标值。具体步骤包括:
确定数组的中间元素。
如果中间元素等于目标值,查找成功。
如果目标值小于中间元素,继续在左半部分查找。
如果目标值大于中间元素,继续在右半部分查找。
重复以上步骤,直到找到目标值或范围为空。
该算法的时间复杂度为O(log n),相较于线性查找的O(n),效率更高。
以下是使用递归实现的二分查找的C++示例代码:
#include <iostream> using namespace std; int binarySearch(int arr[], int left, int right, int target) { if (left > right) { return -1; // 未找到 } int mid = left + (right - left) / 2; // 防止溢出 if (arr[mid] == target) { return mid;香港正版抓码王抓码图 // 找到目标 } else if (arr[mid] > target) { return binarySearch(arr, left, mid - 1, target); // 在左半边查找 } else { return binarySearch(arr, mid + 1, right, target); // 在右半边查找 } } int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int size = sizeof(arr) / sizeof(arr[0]); int target = 5; int result = binarySearch(arr, 0, size - 1, target); if (result != -1) { cout << "元素找到,索引为:" << result << endl; } else { cout << "元素未找到。" << endl; } return 0; }