当前位置: 首页 > news >正文

二分查找_优选算法(C++)二分查找算法

网页直达:

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

题目解析:

1.今天来学习一个新算法-----二分查找.

2.这里题目就是查找数据,暴力解法就是遍历数组,返回下标,但是暴力解法效率慢,主要原因是每一次遍历只能排除一个数据,所以我们的优化思路就是一次减少多个数据,从而引出我们的二分查找算法.

3.我们发现一个有序的数组,我们要查找target从中间找,mid两边就可以大致看出target在两边中的哪一边,我们就可以排除二分之一的区间,我们称之为具有"二段性",但是值得注意的是:其实不一定是有序的才可以使用二分查找,只要满足一定的规律就可以使用二分查找.

代码实现:

这里的二分查找比较简单,就不再赘述.

值得注意的是mid的计算方式mid=(right+left)/2在int的范围内可能溢出,所以我们使用的是int mid = left + (right - left) / 2计算;

class Solution {
public:int search(vector<int>& nums, int target) {int left=0,right=nums.size()-1;int mid=right/2;while(right>=left){int mid = left + (right - left) / 2;  // mid计算方式,避免溢出if(target<nums[mid]){right=mid-1;}else if(target>nums[mid]){left=mid+1;}else{return mid;}}return -1;}
};

总结朴素二分模板:

int mid = left + (right - left) / 2;  // mid计算方式,避免溢出
if(.......)
{right=mid-1;
}else if(........)
}left=mid+1;
}else
{return ....;
}

http://www.dtcms.com/a/445816.html

相关文章:

  • 安卓设备分区作用详解-测试机红米K40
  • 网站开发进度计划是什么长沙游戏推广
  • AI与敏捷开发管理系列4:双向赋能——AI技术如何优化敏捷实践
  • opencv cv2.MorphologyEx
  • 【多线程】读写锁(Read-Write Lock)是什么?
  • 电子商务网站建设步骤百度文库网站ip地址 a记录
  • 常规可见光相机在工业视觉检测中的应用
  • 佛山企业网站建设平台如何把官网
  • Vue3双向数据绑定v-model
  • Vue keep-alive
  • Vue中的hash模式和history模式
  • 微信网站 影楼电商网站开发代码
  • 如何更改PPT的比例大小
  • 【MediaMTX】centos 7 安装MediaMTX
  • 网站开发中 即将上线哈尔滨市建设厅网站
  • linux部署docker(国内镜像)
  • 深入理解HarmonyOS ArkTS语法:从组件化到状态管理
  • 东莞网站制作十强python培训费用大概多少
  • 网站嵌入视频代码郑州短视频运营公司
  • 【Linux】安装配置mysql中出现的问题1
  • CMU15445(2023fall) Project #1 - Buffer Pool Manager优化分析
  • Vue 基础(实战模板与命名指南)
  • 葫芦岛建设信息网站营销专业就业前景
  • 保定网站推广哪家好专业团队张伟图片
  • leetcode 1219 黄金矿工
  • 【Camera】MTK平台的一些基础认识(待补充)
  • Go基础:用Go语言操作MySQL详解
  • 数字短链接生成郑州seo优化
  • 网站排版尺寸安装好的字体怎么用wordpress
  • 如何利用企业微信SCRM打造精准客户营销策略?