代码随心录打卡第一天二分查找

1.二分查找

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

二分查找一共有两种:

1)左闭右闭区间:

1.循环条件为while(left<=right),因为当此时left==right,是有意义的!!!

2.if(num[mid]>target)  右边界:right==mid-1,因为当前的num[mid]一定不是目标值,即查找范围是[mid-1,right];

int reach[int num[],int size,int target]
{
  int left=0;
  int right=size-1;//左闭右开区间
  while(left<=right)
       {
       int mid=(left+right)/2;
       if(num[mid]>target)//左区间
          right=mid-1;
       else if(num[num]<target)//右区间
         left=mid+1;
       else
         return middle;//找到

}
return-1;//未找到
}
  

2)左闭右开区间

1)while(left<right)   因为此时left==right  无意义!!!!

int reach(int num[],int size,int target)
{
  int left=0;
  int right=size;
  while(left<right)
{
  int mid=(right+left)/2;
  if(num[mid]<target)
    right=mid;
  else if(num[mid]>target)
    left=mid+1;
  else
    return mid;
}
return -1;
}

以上是最基础的算法,接下来我们分析这道题:

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

这是对二分查找最简单的应用:左闭右闭

左闭右开算法

!!!不要自己改模版,我第一次就是自己改了模版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值