#include<stdio.h> int binary_search(int ,int* ,int*, int); int main(void) { int a[10]={1,3,5,7,8,9,11,17}; int n=sizeof(a)/sizeof(a[0]),x=11,t=0; int *top=&t,*bot=&n; *bot=*bot-1; int index=binary_search(a,top,bot,x); if(index>=0) printf("%d在数组索引为[%d]的位置\n",x,index); else printf("%d在数组中不存在!\n",x); } int binary_search(int arr[],int *top,int *bot,int x) { if(*bot>=*top){ int index=*top+(*bot-*top)/2; //中间元素 int *mid=&index; //中间元素地址给mid if(arr[*mid]==x) return *mid; if(arr[*mid]>x){ *mid=*mid-1; return binary_serach(arr,top,mid,x);//将mid作为bot,函数递归 } else{ *mid=*mid+1; return binary_search(arr,mid,bot,x);//将mid作为top,函数递归 } } return -1; }