【二分查找】——最简便,易懂
#include<stdio.h>
#define N 10
int binarySearch(int arr[],int k);
int main(){
int arr[N] = {5,6,15,64,65,66,77,88,99,100};
int k;
scanf("%d",&k);
printf("%d",binarySearch(arr,k));
return 0;
}
int binarySearch(int arr[],int k){
int left=0;//左侧起始位置
int right=N;
int mid;
while(right>=left){
mid=(left+right)/2;//每次取左右位置的中间
if(k==arr[mid])
return mid;//如果相等,则返回
if(k>arr[mid])
left=mid+1;//如果大于,则从左侧位置该平分数的单位+1
if(k<arr[mid])
right=mid-1;
}
return -1;//最后没有找到,返回-1
}