C++二分查找基本框架是什么啊,最近在学二分查找不会了
c++二分查找循环基本框架
//what
c++二分查找递归基本框架
//what
二分查找一般用于已经排序好的数组。
比如说有一个数组 1 2 3 4 5 6 7 8 9
我要找5
正常的查找是for循环一个一个找
二分查找这样找
定义2个指针 left 和right
left在最左侧,right在最右侧
然后取中间值 mid;
看中间值大于5还是小于5
若大于5 则left=mid+1;
若小于5 则right=mid-1
left<=right 则查找值不存在
实现代码如下
//二分查找
int a[10]={1,2,3,4,5,6,7,8,9};
int left=0,right=9;
int n=5;
while(left<right)
{
int mid=(left+right)/2;
if(a[mid]==n)
{
printf("findvalue index = %d",mid);
break;
}
else if(a[mid]<n)
{
left=mid+1;
}
else {
right=mid-1;
}
}
二分查找首先要求数组是有序的
然后定义两个游标,一个指向需要搜索的数值区域的左边界,一个指向右边界,然后判断数值区域的中间位置的数值是否是需要查找的值,如果不是,则根据中间值与需要查找的数值的大小,继续在前半部分或后半部分中查找,而这个查找过程,可以递归,因为逻辑完全一致