首页 > 试题广场 >

二分查找

[编程题]二分查找
  • 热度指数:62595 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。

给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。

测试样例:
[1,3,5,7,9],5,3
返回:1
头像 new世界
发表于 2020-05-18 09:29:26
//数组增序减序无所谓 class BinarySearch { public: int getPos(vector<int> A, int n, int val) { if(n<=0) return -1; int left = 0,rig 展开全文
头像 电玩码子
发表于 2022-02-13 21:32:53
暴力编码,使用递归不断获取起点、终点、中点下标。 其中,对于有重复数据的场景,进行了一些判断,避免取到非首次出现的位置。 import java.util.*; public class BinarySearch { public int getPos(int[] A, int n, int val 展开全文
头像 野蛮的河老师在干饭
发表于 2023-03-11 16:13:44
import java.util.*; public class BinarySearch { public int getPos(int[] A, int n, int val) { // write code here int left = 0; 展开全文
头像 SteLLar_LL
发表于 2023-09-14 09:47:25
class BinarySearch { public: int getPos(vector<int> A, int n, int val) { int left=0,right=n-1; while(left<=right) 展开全文
头像 冬天起床有压力
发表于 2022-01-25 21:28:20
import java.util.*; public class BinarySearch { public int getPos(int[] A, int n, int val) { // write code here int low=0,higth=n 展开全文
头像 bao_hu_yuan_zhang
发表于 2024-01-30 10:22:41
class BinarySearch { public: int getPos(vector<int> A, int n, int val) { int i=0; int j=n-1; while(i<=j) 展开全文
头像 牛客816424091号
发表于 2022-03-20 23:29:10
import java.util.*; public class BinarySearch { public int getPos(int[] A, int n, int val) { // write code here int left = 0, righ 展开全文
头像 贪吃的迪恩顶呱呱
发表于 2024-05-01 15:41:16
参考文章:https://blog.csdn.net/melonyzzZ/article/details/128599307经典的左闭右闭二分查找,即查找的范围是 [l,r] class BinarySearch { public: int getPos(vector<int> 展开全文
头像 TestNovice
发表于 2022-06-01 11:36:42
PYTHON class BinarySearch: def erfen(self,ls,left,right,val): if left <= right: mid = (left + right) // 2 if val == ls[mid]: return mid elif val &l 展开全文
头像 duola11
发表于 2022-11-13 16:59:39
def BinarySearch(A, n, val):     left = 0     right = n -& 展开全文