

Position BirnarySearch(List L,ElementType X)
{
int low = 0;
int high = L->Last - 1;
int mid ;
while(low <= high){
mid = (low + high) / 2;
//右边查找
if (X> L.Data[mid]) {
low = mid + 1;
//左边查找
}else if (X< L.Data[mid]) {
high = mid - 1;
}else{
return mid;
}
}
return -1;
}
#include "stdio.h"
void main()
{
int a[10]={1,2,3,4,5,8,10,110,120,1000};
int left,right,mid;
int num,cnt=0;
printf("请输入你要查找的数据:");
scanf("%d",&num);
left = 0;
right= 9;
while(left<=right){
//计算查找次数
cnt++;
//获取中间位置元素的下标
mid = (left+right)/2;
if(num>a[mid]){
//往右找
left=mid+1;
}else if(num<a[mid]){
//往左找
right=mid-1;
}else{
//找到了
printf("在第%d个位置找到了数据,共查找%d次\n",mid+1,cnt);
break;
}
};
if(left>right){
printf("你要查找的数据不存在\n");
}
}