⼆分查 (折半查),它是⼀种效率较⾼的查⽅法。但是,折半查要求线性表必须采⽤顺序存储结构,⽽且表中元素按关键字有序排列。
要使⽤⼆分查有两个条件
1.必须是经过排序的数据集合
2.只适⽤于顺序储存的数据集合
话不多说,举个例⼦
设数据集合
D{5,13,17,42,46,55,70,94}
key=94(既要寻的值)
qbz95b01234567
513174246557094
无味红霉素
设low=0,high=7,要⽐较元素的下标为mid。
每次寻都要从数组(即low和high)最中间的元素开始⽐较,也就是mid=(low+high)/2,若key>D[mid],即mid左边的元素都⼩于key,然后low=mid+1,同理,当key<D[mid],high=mid-1; 循环执⾏该操作,当low>high时,跳出循环。 代码表⽰:
int low=0,high=数组长度-1;团结湖三中
int HalfSearch(int D[],int low,int high,int key)
{
活顶尖int mid;
while(low<=high)//当low>high时,跳出循环。高粱秸
{
mid=(low+high)/2;//从数组(即low和high)最中间的元素开始⽐较
if(D[mid]==key)
{
return mid;//直接返回要元素的下标
}
双性同体else if(a[mid]<key)
{
low=mid+1;//mid左边的元素都⼩于key,然后low=mid+1
}
else
{
high=mid-1;//mid右边的元素都⼩于key,然后high=mid-1
}
}
return-1;//⽆法到
}
最近才开始写博客,有点菜,请⼤佬多多指教