1.二分查找的前提
<1>要查找的线性表必须是顺序存储的
<2>线性表中的元素必须是有序排序的
2.二分查找的过程
int BinarySearch(List Tbl, ElementType K) // 定义一个有两个参数函数,Tbl为线性表,K为关键字
{
int left,right,mid,NoFound =-1; 定义几个标签,left为左标签,right为右标签,mid为中间值,NoFound为未找到的标记值
left = 1; //letf指向第一个元素
right = Tbl->Length;//right指向最后一个元素
while(left <= right) //循环的判断条件:letf和right未发生置换
{
mid = (left+right)/2; //中间值为left与right和的一半
if(K < Tbl->Element[mid]) right = mid-1; //如果要找的K在线性表的左半部分,则right向左移,移至mid左边
else if(K > Tbl->Element[mid]) left = mid -1;//如果要找的K在线性表的右半部分,则left向右移,移至mid右边
else return mid;//当left和right指向同一个元素时,并且不再发生移动时,则说明找到了K,即mid指向的元素,即mid,left,right三者指向了同一个元素,即K
}
return NotFound;//如果不满足while的循环条件,即left大于right,则返回NoFound,即-1
}
3.二分查找的结果
<1>成功找到,则输出找到的值
<2>未找到,提示错误信息