#include <stdio.h>
int binary_search(const int arr[],int low, int high,int key);
int main(int argc, char **argv)
{
int arr[] = {4,8,20,30,50,60};
int len = sizeof(arr) / sizeof *arr; // 求数组长度
int key;
printf("请输入一个数字:");
scanf("%d",&key);
printf("\n");
int low = 0;
int high = len - 1;
int pos = binary_search(arr,low,high,key);
printf ("pos = %d\n",pos);
return 0;
}
int binary_search(const int arr[],int low, int high,int key)
{
int mind = low + (high - low)/2; // 记录中间 角标
while (low <= high) {
if (key == arr[mind]) {
return mind;
}
else if(key > arr[mind]){
low = mind + 1;
mind = low + (high - low)/2;
}
else if(key < arr[mind]){
high = mind - 1;
mind = low + (high - low)/2;
}
if(low>high){
return -1;
}
}
return -1;
}