●二分查找是在一组有序数组中,查找某个指定元素,若找到
则返回该元素的下标
设置首元素的下标left、尾元素的下标right、还有一个重要的下标
就是中间元素的下标mid
如果所查找的指定元素大于中间元素,那么left+1,
如果所查找的指定元素小于中间元素,那么right-1,
若指定元素与中间元素相等,则返回下标mid;
int midfind(int *str,int n,int key)
{
int left=0;
int right=n-1;
while(left<=right) //注意判断符是<=,而不是<
{
int mid=(left+right)/2; //每进行一次循环mid重新赋值
if(key>str[mid])
{
left++;
}
else if(key<str[mid])
{
right--;
}
else
{
return mid;
}
}
return -1; //若没有找到则返回-1
}
int main()
{
int str[]={
1,2,3,4,5,6,7,8};
int len=sizeof(str)/sizeof(str[0]);
int find=midfind(str,len,8);
if(find==-1)
{
printf("没有找到指定元素");
}
else
{
printf("找到,下标为%d",find);
}
return 0;
}
在一个有序数组中找指定元素,那么二分查找该怎么写(最易懂的二分查找算法)
猜你喜欢
转载自blog.csdn.net/cfk17829572643/article/details/109843607
今日推荐
周排行