#include<stdio.h>
#include<stdlib.h>
//二分查找法
#define N 10
int barraySearch(int *arr,int low,int high,int key){//key为目标值
int mid;
while(low<=high){
mid=(low+high)/2;
if(arr[mid]<key){
//要查找的数小于中间的值
low=mid+1;
}
else if(arr[mid]>key){
high=mid-1;
}
else{
return mid;//说明找到了
}
}
}
int main(){
int a[]={5,8,23,67,69,78,76,77,79,89};//数组有序,有序,有序
int post;
post=barraySearch(a,0,N-1,8);
printf("post=%d\n",post);
system("pause");
}
如果查找的元素不在该数组中,会返回离这个数最相近的那个数的下标,你也可以在barraySearch这个方法中再加一个条件,找不到时返回“该元素不在数组中!”