经典算法-二分查找
Posted 嗨客网IT教程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典算法-二分查找相关的知识,希望对你有一定的参考价值。
题目
力扣第 704 题,给定一个 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
提示:
你可以假设
nums
中的所有元素是不重复的。n
将在[1, 10000]
之间。nums
的每个元素都将在[-9999, 9999]
之间。
思路
本题的前提思路是给出的数组已经是有序的数组。我们可以使用二分法进行慢慢的排除来找到对应的值是否在数组里面。
二分法的主要思想是取数组的中间数据作为比较对象,如果给定的数值与中间的关键字相等,那么就返回其数组下标,如果中间的关键字比给定的值大,那么就需要在中间记录的左半边的区域进行查找。如果中间的关键字比给定的值小,那么就需要在中间记录的右半边区域进行查找。不断的重复上述过程。
我们以示例1为例子,原始数组如下:
我们可以看到当前的步骤中,mid 对应的数值是 9,和题目中需要比对的数值相等,所以我们将 mid 返回,就找到了数组中的位置。
代码实现
Java 语言版本实现如下:
嗨客网(haicoder.net)
以上是关于经典算法-二分查找的主要内容,如果未能解决你的问题,请参考以下文章