二分查找算法java

 

二分查找又称折半查找,它是一种效率较高的查找方法。

折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素必须有序。

折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。

算法步骤描述

① 首先确定整个查找区间的中间位置 mid = ( left + right )/ 2

② 用待查关键字值与中间位置的关键字值进行比较;

  若相等,则查找成功

  若大于,则在后(右)半个区域继续进行折半查找

  若小于,则在前(左)半个区域继续进行折半查找

③ 对确定的缩小区域再按折半公式,重复上述步骤。

最后,得到结果:要么查找成功, 要么查找失败。折半查找的存储结构采用一维数组存放。

package src.com.sunchis.basic;  
public class BinarySearch { /** * 二分查找算法 * @param srcArray 有序数组 * @param key 查找元素 * @return key的数组下标,没找到返回-1 */  public static void main(String[] args) { int srcArray[] = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};  System.out.println(binSearch(srcArray, 0, srcArray.length - 1, 81)); }  // 二分查找递归实现   public static int binSearch(int srcArray[], int start, int end, int key) {   int mid = (end - start) / 2 + start; if (srcArray[mid] == key) {   return mid;   }   if (start >= end) {  return -1;   } else if (key > srcArray[mid]) {  return binSearch(srcArray, mid + 1, end, key); } else if (key < srcArray[mid]) {   
return binSearch(srcArray, start, mid - 1, key); } return -1; } // 二分查找普通循环实现 public static int binSearch(int srcArray[], int key) { int mid = srcArray.length / 2; if (key == srcArray[mid]) { return mid; } int start = 0; int end = srcArray.length - 1; while (start <= end) { mid = (end - start) / 2 + start; if (key < srcArray[mid]) { end = mid - 1; } else if (key > srcArray[mid]) { start = mid + 1; } else { return mid; } } return -1; } }

 

转载于:https://www.cnblogs.com/estellez/p/3956654.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv简单的矩阵操作

OpenCV的基本矩阵操作与示例 OpenCV中的矩阵操作非常重要&#xff0c;本文总结了矩阵的创建、初始化以及基本矩阵操作&#xff0c;给出了示例代码&#xff0c;主要内容包括&#xff1a; 创建与初始化矩阵加减法矩阵乘法矩阵转置矩阵求逆矩阵非零元素个数矩阵均值与标准差矩阵全…

中科院院士丁汉:数字化制造、机器人、人工智能是智能制造 “三驾马车”

丁汉院士演讲1月10日&#xff0c;由中国机电一体化技术应用协会、北京理工大学智能机器人与系统高精尖创新中心、中关村智友天使学院、机器人大讲堂(立德共创服务平台)、中关村融智特种机器人产业联盟和中关村信息谷等单位共同举办的2019年中国机器人行业年会在北京召开。会上&…

图像拼接---图片柱面投影简单实现

算法思想参考&#xff1a;http://blog.csdn.net/weixinhum/article/details/50611750 柱面投影是图片拼接的前期的一部分工作&#xff0c;以下代码只是简单的实现了投影&#xff0c;还可以优化&#xff0c; 柱面半径设置位图片宽度的一半&#xff0c;即 R width/2 代码运算…

photoshop问题

1、路径与形状有什么区别&#xff1f; 2、矢量蒙板作用及生成&#xff1f; 形状工具 U 可以生成 3、路径和形状的区别&#xff1f; 路径 矢量选区&#xff0c;半成品可转为蒙板&#xff0c;形状转载于:https://www.cnblogs.com/anjsxz/p/3963400.html

从消费端到企业端,从设备到数据:物联网市场的爆发式增长

来源&#xff1a;资本家实验室随着越来越多的设备接入网络&#xff0c;并实现相互沟通&#xff0c;我们正在加速进入“万物互联”的时代。在此背景下&#xff0c;连接设备的数量、产生的收入和数据量也将呈现惊人的增长&#xff1a;到2020年&#xff0c;全球连接设备数量将达到…

《LoadRunner 没有告诉你的》之四——理解性能

本文是《LoadRunner没有告诉你的》系列文章的第四篇&#xff0c;在这篇短文中&#xff0c;我将尽可能用简洁清晰的文字写下我对“性能”的看法&#xff0c;并澄清几个容易混淆的概念&#xff0c;帮助大家更好的理解“性能”的含义。 如何评价性能的优劣: 用户视角 vs. 系统视角…

容斥原理---概念介绍

容斥原理---概念介绍 容斥原理是一种基本的计数工具。 假设我们有N个对象的集合A&#xff0c;设a1, a2,…, ar是这些对象可能有的性质的集合&#xff0c;设N(ai )是有性质ai的对象数目。一个对象可能有若干个所讨论的性质&#xff08;或一个性质也没有&#xff09;。设N(a’i …

c#自动更新+安装程序的制作

一、自动更新的实现 让客户端实现自动更新&#xff0c;通常做法是在客户端部署一个单独的自动更新程序。主程序启动后&#xff0c;访问服务端&#xff0c;检查配置文件是否有更新版本&#xff0c;有更新版本就启动更新程序&#xff0c;由更新负责下载更新版本&#xff0c;并更新…

中国AI科研产出全球第一 但引文影响力低

来源&#xff1a;科学网 日前&#xff0c;爱思唯尔发布了《人工智能&#xff1a;知识的创造、转移与应用》报告&#xff0c;分析了全球人工智能科研的发展趋势。报告显示&#xff0c;2017年中国在人工智能领域出版的文章数量位列全球第一&#xff0c;科研产出已在2004年超过美国…

OpenCV--SIFT算法检测特征点

代码选自&#xff1a;http://blog.csdn.net/zhaocj/article/details/42124473 SIFT算法是用来检测图像中特征点的&#xff0c; 代码如下&#xff1a; opencv版本:2.4.9 #include "opencv2/opencv.hpp" #include "opencv2/imgproc/imgproc.hpp" #include…

对话 Geoffrey Hinton Demis Hassabis :人工智能离我们有多远?

来源&#xff1a;AI科技评论预测用户喜欢的音乐类型、检测出转移性肿瘤、生成脑癌的综合扫描、利用真实世界中拍摄的视频创造出虚拟环境、识别出被拐卖的人口、击败国际象棋大师以及专业的 Dota2 电竞团队、帮助 Alphabet 旗下的 Waymo 首次推出商业无人驾驶出租车服务、代替出…

SharePoint 2013 关于自定义显示列表表单的bug

1、在SharePoint 2013中&#xff0c;我们隐藏列表Dispform页面的ListFormWebPart部件&#xff0c;转而使用自定义显示列表表单进行展示&#xff0c;因为这样更容易定制我们需要的显示&#xff1b; 2、之后发现文件夹下的文档&#xff0c;查看属性会报错&#xff0c;如下图&…

SIFT算法中概念简单解释

尺度空间 真实世界的物体只有在一定尺度上才有意义&#xff0c;例如我们能够看到放在桌子上的水杯&#xff0c;但对于整个银河系&#xff0c;这个水杯是不存在的。物体的这种多尺度的本质在自然界中是普遍存在的。尺度空间就是试图在数字图像领域复制这个概念。又比如&#xf…

发布|CES 2019 科技趋势(附40页PPT)

来源&#xff1a;Robot未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff…

UVAL - 6755 - Swyper Keyboard

先上题目&#xff1a; https://icpcarchive.ecs.baylor.edu/external/67/6755.pdf 题目复制起来比较麻烦。 题意&#xff1a;定义一种操作&#xff1a;给出一个字符串&#xff0c;然后手指就按照给出的字符串的字符出现顺序不离开触摸屏那样移动&#xff0c;这样最后就会得到一…

Ransac算法简介

给定两个点p1与p2的坐标&#xff0c;确定这两点所构成的直线&#xff0c;要求对于输入的任意点p3&#xff0c;都可以判断它是否在该直线上。初中解析几何知识告诉我们&#xff0c;判断一个点在直线上&#xff0c;只需其与直线上任意两点点斜率都相同即可。实际操作当中&#xf…

2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势

来源&#xff1a;网络大数据1、简介过去几年一直是人工智能爱好者和机器学习专业人士最幸福的时光。因为这些技术已经发展成为主流&#xff0c;并且正在影响着数百万人的生活。各国现在都有专门的人工智能规划和预算&#xff0c;以确保在这场比赛中保持优势。数据科学从业人员也…

HDU 2421

由算术基本定理Np1^e1*p2^e2....ps^es&#xff0c;可知一个素的因子个数为(e11)*(e21)*...*(es1)。 而N的一人因子必定也有np1^k1*p2^k2。。。。*ps^ks的形式。因子个数形式同上。 而事实上&#xff0c;即是从ei中选取其中一些来充当k1。那么&#xff0c;所有的因子的个数之和必…

仿射变换的原理

在条形码识别软件中有图像预览的功能。有时预览的图像需要进行转置&#xff08;旋转180度或者90度&#xff09;、缩放、镜像&#xff08;左右反转&#xff09;等操作。OpenCV提供了相应的函数进行以上操作。例如&#xff1a; 转置&#xff1a;cv::WarpAffine() 缩放&#xff…

拯救顽疾大作战!IDC绘中国医疗AI生态图谱,英伟达献医疗影像新杀器

来源&#xff1a;智东西摘要&#xff1a;中国千家医院部署AI系统&#xff01;IDC医疗AI报告详解行业趋势和五大药方。2018年是令人唏嘘的一年&#xff0c;台湾作家李敖、动画大师高畑勋、相声表演艺术家师胜杰、央视主持人李咏、微软联合创始人保罗艾伦、武侠小说宗师金庸等一个…