LeetCode 704. 二分查找 (Binary Search)
问题描述:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例:
C语言实现:
二分查找是一个十分常用的算法,其实在前面的题目中我们已经用过这种算法。
本来不打算解这道题,但是还是觉得劲量不要遗漏的好。
对于新手来说,要提醒一下, 二分查找查找的前提是有序 数列 ,所以要操作的数列是一个无序的,要先排序。
我曾经就碰到过一个面试的,上来就二分查找,根本没有判断数组是否有序。
二分查找的思路非常简单,通常我们要定义两个整形变量left和 right ,分别保存数组的起始下标和末尾下标。
然后通过判断target与nums[(right+left)/2]的大小关系,来不断调整left和right的值,以此来不断的缩小查找的范围,最后得到结果。
具体代码如下:
Java语言的实现:
Java 的实现和C语言的实现基本一致,不再撰述。代码如下:
python语言的实现:
python 的实现和C语言的实现基本一致,不再撰述。代码如下: