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

网站的内部优化公司想做一个网站平台怎么做的

网站的内部优化公司,想做一个网站平台怎么做的,微信公众号的模板网站,企业网络费用文章目录 前言 大家好,我是最爱吃兽奶,这篇博客给大家介绍一下二分查找,我们先从最基本的开始讲解,再慢慢深入,把优化和变形也和大家说一下,那么,跟着我的步伐,我们一起去看看吧! 一、什么是二分查找? 二分查找(Binary Search)也称作折半查找 二分查找的效率很高,每查找一次…

文章目录


前言

大家好,我是最爱吃兽奶,这篇博客给大家介绍一下二分查找,我们先从最基本的开始讲解,再慢慢深入,把优化和变形也和大家说一下,那么,跟着我的步伐,我们一起去看看吧!


一、什么是二分查找?

二分查找(Binary Search)也称作折半查找

二分查找的效率很高,每查找一次,查找对象的数量就会减半

条件:要查找的元素集合必须有序

二、二分查找的实现

1.基础版

需求: 给定一个升序数组,要求我们查找数组中是否包含目标元素tmp,如果存在,则返回索引,不存在返回-1 

接下来,我们就以这个数组为你进行讲解
int[] arr = {7, 13, 21, 30, 38, 44, 52, 53};

你可以打开你的编译器试着写写,思考之后再往下看效果更好哦

相信你已经写完了吧,那么我们来试着分析一下吧!

代码

    public static int BinarySearchBalance(int [] arr,int target){// 定义左右边界int left = 0;int right = arr.length-1;// 循环终止条件 left<=rightwhile (left<=right) {int mid = (left+right)/2;if(target<arr[mid]){// 表示目标值在中间值的左边,向左缩小范围,令right = mid-1;right = mid-1;}else if(target > arr[mid]){// 表示目标值在中间值的右边,向右缩小范围,令right = mid+1;left = mid+1;}else{// target == arr[mid] 找到了,直接返回target处的下标return mid;}}// 循环结束,此时left>right,表名该数组中没有目标元素,直接返回-1return -1;}
}

 

 

 经过了上面的解释,你是不是恍然大明白了呢?

不理解的话,欢迎评论区留言,有需要指点的地方也请评论区留言

 那么接下来,就开启我们的进阶之旅吧!

2.进阶版

我们先来思考一下,基础版的代码是否有问题?

相比你们都清楚,是有问题的,要不然怎么会有进阶版呢?

问题1:  int mid = (left+right) / 2 有什么问题?

如果right的值为 Integer.MAX_VALUE-1 ,那么第二次循环时将有可能越界

当target<arr[mid]的时候,left = mid+1 ,(left+right)的值会超过int类型所能接受的最大值,会直接变成负数,导致mid为负值,在此时如果调用arr[mid] 会报异常

 

解决办法: int mid = (left+right)>>>1;

>>>: 无符号右移,最高位永远补零  

我们在这里直接右移一位,天王老子来了mid都不可能变成负数了

问题2: 为什么left<=right 表示区间内有未比较的元素,而不是left<right?

left == right 表示它们指向的元素也会参与比较,left<right 则表示mid指向的元素参与比较


进阶版

j的位置一定不是目标元素!!!

 

 代码

    public static int BinarySearchAlternation(int[] arr,int target){int left = 0;int right = arr.length; //right 只作为边界,指向的一定不是查找目标while(left<right){// 表示left和right指向的元素不参与比较int mid = (left+right)>>>1;if(arr[mid]>target){// right 指向的元素不参与比较,不能赋值为 mid+1right = mid;} else if (arr[mid]<target) {left = mid+1;} else {return mid;}}return -1;}
 

总结

以上就是二分查找基础篇的内容了,想了解更多,关注作者,后续更加精彩!

http://www.yayakq.cn/news/936230/

相关文章:

  • 网站建设使用技术如何做代刷网站长
  • vps建站教程五易网络
  • 北京网站优化经理建设企业官方网站企业登录
  • 自己网站怎么做百度推广画册设计报价明细表
  • 枣强做百度网站怎么用wordpress模板
  • 做网站设计的长宽一般是多少钱wix怎么做网页
  • 免费网站程序长春做网站公司哪家好
  • 做网站公司cnfg长沙网站制作公司怎么做
  • 小说网站分页关键字怎么做电商网店运营实训报告
  • 快三网站开发深圳wordpress外贸网站建设
  • 网站建设的基本原则wordpress lamp 建站
  • 哔哩哔哩网站4 3比例怎么做泉州seo培训
  • wordpress网站百度收录首页深圳网络推广服务是什么
  • 网站logo替换盐城网站制作网络推广
  • 一个上线的网站需要怎么做网站美化工具
  • 豆瓣网站模板国外英语写作网站
  • 做数据权威的网站南京网站维护公司
  • 建设网站需要考虑什么方案库网站
  • godaddy做网站灯饰网站源码
  • 有链接的网站怎么做机械加工网厂
  • 建设网站分几个步骤攀枝花住房和城乡建设厅官方网站
  • 营销网站制作需要多少钱seo竞争对手网站分析
  • 网站建设模板的网站制作有什么好的介绍
  • 公网ip做网站访问不门户网站建设厂商名录
  • 哪个网站有适合小学生做的题目中国建筑网官网新闻
  • 网站转移码2023国际别墅设计展
  • 正规排名网站推广公司什么网站算是h5做的
  • 营销型企业网站开发蝉知cms
  • 商城网站怎么建服装网站设计欣赏
  • 网站建设常用模板新媒体营销与运营