当前位置:   article > 正文

C语言二分查找题目练习_c语言搜题

c语言搜题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


题目

leetcode链接:https://leetcode.cn/problems/binary-search/

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1


一、什么是二分查找

二分查找也称为对半查找,是一种在有序数组中查找特定元素的搜索算法。其核心思想是将数组不断对半分割,并比较中间值与目标值的大小来缩小搜索范围。如果中间值等于目标值,则查找成功;如果中间值小于目标值,则目标值在数组的右半部分;如果中间值大于目标值,则目标值在数组的左半部分。
二分查找解题的前提:数组元素是有序不重复的。因为一旦有重复元素,二分查找返回的元素下标可能不是唯一的。所以只有当题目满足上述条件后才可以考虑是否使用二分法。

二、二分法的边界条件

二分法的区间定义一般分为两种:左闭右闭即[left, right],左闭右开[left, right)

二、二分法的写法

1、左闭右闭[left, right]

左闭右闭区间需要注意一下两点:

a、while (left <= right)要使用<=,因为left == right是有意义的

b、if (nums[middle] > target) right要赋值为middle - 1,因为当前这个nums[middle]不一定是target,那么接下来要查找的左区间结束下标位置就是middle - 1

在这里插入图片描述

代码如下(示例):

int search
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/904987
    推荐阅读
    相关标签
      

    闽ICP备14008679号