树东二分查找【入门】
已结束
ACM/ICPC
开始于: 2024-3-15 16:00
5500
小时
主持人:
6
<p node="[object Object]" dir="auto" style="margin-bottom:16px;color:#24292F;font-family:"font-size:14px;text-wrap:wrap;background-color:rgba(0, 0, 0, 0.05);margin-top:0px !important;">
二分查找算法(Binary Search Algorithm)是一种用于在有序数组中查找特定元素的高效算法。它的基本思想是通过比较目标值和数组中间元素的大小关系,从而缩小查找范围,直到找到目标值或确定目标值不存在为止。
算法步骤:
- 将数组按照某种规则(通常是升序排列)排列。
- 设定初始搜索范围为整个数组。
- 每次取搜索范围的中间值,与目标值进行比较。
- 如果中间值等于目标值,则返回中间值的索引;如果中间值大于目标值,则在左半部分继续查找;如果中间值小于目标值,则在右半部分继续查找。
- 重复上述步骤,直到找到目标值或搜索范围缩小至空。
算法特点:
- 时间复杂度为O(log n),是一种高效的查找算法。
- 适用于有序数组,不适用于链表等非随机访问结构。
- 二分查找是一种迭代的算法,也可以使用递归实现。
示例:
假设有一个有序数组arr = [1, 3, 5, 7, 9, 11, 13, 15, 17],要查找目标值为7。
- 初始搜索范围为整个数组,左指针left = 0,右指针right = 8。
- 计算中间索引mid = (0 + 8) / 2 = 4,对应元素arr[4] = 9,大于目标值7。
- 更新右指针为mid - 1,即right = 3,缩小搜索范围为左半部分。
- 继续查找,计算新的中间索引mid = (0 + 3) / 2 = 1,对应元素arr[1] = 3,小于目标值7。
- 更新左指针为mid + 1,即left = 2,缩小搜索范围为右半部分。
- 继续查找,计算新的中间索引mid = (2 + 3) / 2 = 2,对应元素arr[2] = 5,小于目标值7。
- 更新左指针为mid + 1,即left = 3,缩小搜索范围为右半部分。
- 继续查找,计算新的中间索引mid = (3 + 3) / 2 = 3,对应元素arr[3] = 7,与目标值相等,返回索引3。
通过以上步骤,二分查找算法成功在有序数组中找到目标值7的索引为3。
- 状态
- 已结束
- 规则
- ACM/ICPC
- 题目
- 3
- 开始于
- 2024-3-15 16:00
- 结束于
- 2024-10-30 20:00
- 持续时间
- 5500 小时
- 主持人
- 参赛人数
- 6