#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x)
{
if (r >= l) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binarySearch(arr, l, mid - 1, x);
return binarySearch(arr, mid + 1, r, x);
}
return -1;
}
int main(int argc, char* agrv[]) {
// 生成测试所用的数组
int arr[1000], a[10]={1,2, 4,5 , 7,8, 9,10, 17, 21};
for (int i = 0; 100 > i; i++) {
for (int j =1; 11 > j; j++) {
if (i*10 +j > 999) {
break;
}
arr[i*10+j] = i*50 + arr[j-1];
}
}
// 二分查找
for (int i = 0; 200 >i ;i++) {
for (int j = 0; 1000> j; j++) {
binarySearch(arr, 0, 999, arr[j]);
}
}
return 0;
}
原文:https://www.cnblogs.com/tmortred/p/13129641.html