二分法
二分查找
基于有序序列的查找方法,时间复杂度为O(logn)
#include<cstdio>
int binarySearch(int A[], int left, int right, int x) {
int mid; // left和right中点
while (left <= right) {
mid = (left + right) / 2; // 取中点
if(A[mid] == x) return mid;
else if(A[mid] > x) right = mid - 1;
else left = mid + 1;
}
return -1; // 查找失败返回-1
}
int main() {
const int n = 10;
int A[n] = { 1, 3, 4, 6, 7, 8, 10, 11, 12, 15 };
printf("%d, %d\n", binarySearch(A, 0, n-1, 6), binarySearch(A, 0, n-1, 9));
return 0;
}