作业介绍
二分法
定义
二分查找(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是用来在一个有序数组中查找某一元素的算法。
过程
以在一个升序数组中查找一个数为例。
它每次考察数组当前部分的中间元素,如果中间元素刚好是要找的,就结束搜索过程;如果中间元素小于所查找的值,那么左侧的只会更小,不会有所查找的元素,只需到右侧查找;如果中间元素大于所查找的值同理,只需到左侧查找。
二分查找模板
int L = 1, R = n;
while(L <= R)
{
int mid = (L + R) / 2;
if(arr[mid] == x)//如果中间值是x,则结束查找
{
cout << mid;
return 0;
}
else if(arr[mid] > x)//如果中间值大于x,则去左边找
{
R = mid - 1;
}
else//如果中间值小于x,则去右边找
{
L = mid + 1;
}
}
二分查找左侧边界模板
int p = -1;
int l = 1, r = n;
while(l <= r)
{
int mid = (l + r) / 2;
if(a[mid] >= x)
{
if(a[mid] == x)
{
p = mid;
}
r = mid - 1;
}
else
{
l = mid + 1;
}
}
题目
认领作业后才可以查看作业内容。
- 状态
- 正在进行…
- 题目
- 10
- 开始时间
- 2025-1-9 0:00
- 截止时间
- 3333-5-1 23:59
- 可延期
- 24 小时