left + (right - left) /2这段代码怎么来的
时间: 2024-05-17 16:17:55 浏览: 19
这段代码是二分查找算法中寻找中间值的常用表达式。其中,left 和 right 分别表示当前查找范围的左右边界,(right - left) 表示当前查找范围的长度,除以 2 表示将当前查找范围分成两部分,取中间值。
这个表达式的逻辑是将当前查找范围一分为二,然后确定中间值,再根据中间值与目标值的大小关系来缩小查找范围,直到找到目标值为止。这个过程可以大大提高查找效率,尤其是在大规模数据中查找时,比顺序查找要快得多。
相关问题
请问这段代码是用来做什么的?d = detected_faces[0].rect left = d.left(); right = d.right(); top = d.top(); bottom = d.bottom() old_size = (right - left + bottom - top)/2 center = np.array([right - (right - left) / 2.0, bottom - (bottom - top) / 2.0 + old_size0.14]) size = int(old_size1.58)
这段代码是用来从检测到的人脸框中提取出人脸区域的位置和大小。具体来说,首先从检测到的人脸中提取出第一个人脸的矩形位置信息,然后计算出该人脸矩形的中心点位置和大小,并将其保存在变量center和size中。其中,old_size表示矩形的原始大小,通过计算矩形的宽和高的平均值得到。最后,将size四舍五入成整数。
#include <stdio.h> #define Maxn 10001 int main() { int flag=0; int i,n,a[Maxn],left,right,ans=0; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); left=1; right=n; while(left<right) { if(a[left] == a[right]) { if(left+1==right || left+2==right){//成功得到回文数组 } left++; right--;//left和right指针的移动 } else if(a[left] > a[right]) //右部做操作 { a[right-1] += a[right]; right--; ans++; } else//左部做操作 { } } if(flag==0) ans=-1; printf("%d\n",ans); return 0; }
这段代码实现了将给定的数组变成回文数组的操作,但是在左部做操作的情况下缺少代码。在左部做操作时,应该将 a[left+1] 加上 a[left],然后将 left 加 1,同时将 ans 加 1。完整的代码如下:
```c++
#include <stdio.h>
#define Maxn 10001
int main()
{
int flag = 0;
int i, n, a[Maxn], left, right, ans = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
left = 1;
right = n;
while (left < right)
{
if (a[left] == a[right])
{
if (left + 1 == right || left + 2 == right)
{
//成功得到回文数组
}
left++;
right--;
}
else if (a[left] > a[right]) //右部做操作
{
a[right - 1] += a[right];
right--;
ans++;
}
else //左部做操作
{
a[left + 1] += a[left];
left++;
ans++;
}
}
if (flag == 0)
ans = -1;
printf("%d\n", ans);
return 0;
}
```
需要注意的是,当无法将数组变成回文数组时,应该将 ans 设为 -1,但是该代码中并没有给出判断无法变成回文数组的情况。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)