折半查找
day:9.25
折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
定义Low为顺序表的最小下标,High为最大下标
方法1(非递归):
int HalfSearch(int R[],int x)
{
while(Low<=High)
{
mid=(Low+High)/2;
if(x==R[mid])
return mid;
else if(x<R[mid])
High=mid-1;
else
Low=mid+1;
}
return 0;
}
方法2(递归)
int HalfSearch2(int R[],int low,int high,int x)
{
if(low>high)
return 0;
mid=(low +high)/2;
if(R[mid]==x)
return mid;
else if(x<R[mid])
return(HalfSearch2(R,low,mid-1,x));
else
return(HalfSearch2(R,mid+1,high,x));
}