当前位置: 首页 > 编程日记 > 正文

二分查找的循环实现和递归实现

自己实现了二分查找的循环实现和递归实现

说明:二分查找适用于顺序存储结构,不适于链式存储结构,是一个高效的查找方法。虽然折半查找效率高,但是要排序,排序本身是一种很费时的运算。
要求传入的表是有序的。
二分查找的过程可用二叉树描述,把当前区间的中点位置上的元素作为根,左子表和右子表中的元素分别作为根的左子树和右子树,由此得到二叉树。
此树称为描述折半查找的判定树或比较树。

package lirui.find;/*** Created by lirui on 14-8-14.*/
public class BinarySearch {/*** 二分查找法要求传入的参数是有序的,且从小到大递增。* 循环的方式实现。** @param list* @param key* @return*/public static int mybinarySearch(int[] list, int key) {int low = 0, high = list.length-1, mid;int n = list.length;while (low <= high) {mid = (low + high) / 2;if (key == list[mid]) {return mid;}if (key < list[mid]) {high = mid - 1;} else {low = mid + 1;}}return -1;}// 用递归算法实现二分查找public static int mybinarySearchRec(int[] list, int key, int low, int high) {int mid;if (low <= high) {mid = (low + high) / 2;if (key == list[mid]) {return mid;}if (key < list[mid]) {return mybinarySearchRec(list, key, low, mid - 1);} else {return mybinarySearchRec(list, key, mid + 1, high);}}return -1;}public static void main(String[] args) {int[] list = {2, 4, 6, 7, 9, 10, 33, 500};int result = mybinarySearch(list, 5);System.out.println(result);int result2 = mybinarySearchRec(list,5,0,7);System.out.println(result2);}
}


相关文章:

CentOS6.8 编译安装LNMP

思路&#xff1a;根据Linux系统以及公司网站系统的信息&#xff0c;选择合适的安装包进行安装 一、查看系统信息 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # grep MemTotal /proc/meminfo # 查看内…

js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称

1,列举对象属性的名称<script language"javascript">varobjnewObject();obj.a"您好&#xff0c;我是田洪川";obj.b"你是田洪川咋的&#xff0c;不得了啊&#xff1f;";obj.c"西西&#xff0c;哈哈&#xff0c;我是属性 c ";//上…

Matlab与数据结构 -- 对向量的排序

本图文介绍了Matlab怎样实现对向量的排序。

HashMap和HashSet原理及底层实现

HashMap底层用哈希算法实现&#xff0c;下面看一下哈希算表的整体概括&#xff1a; 当map.put(“key”,”values”);的时候&#xff0c;底层是这样的&#xff1a; static final Entry<?,?>[] EMPTY_TABLE {}; transient Entry<K,V>[] table (Entry<K,V&g…

Study on Android【三】--Intent消息传递

在前面写Android的ContentProvider时候&#xff0c;可以看到那是基于观察者模式的一个消息传递方法。每一个Cursor、ContentResolver做为一个小的注册中心&#xff0c;相关观察者可以在这个中心注册&#xff0c;更新消息由注册中心分发给各个观察者。而在MFC或Winform中&#x…

Matlab与数据结构 -- 对矩阵的排序

本图文介绍了Matlab怎样实现对矩阵的排序。

Java_中快速获取系统时间

直接调用System的currentTimeMillis()即可&#xff01; long start System.currentTimeMillis(); System.out.println("Start time : "start);

servlet必知细节(一)

servlet必知细节&#xff08;一&#xff09; 今天复习了一下servlet&#xff0c;有过一些编程经验后&#xff0c;与最初学习servlet相比&#xff0c;对servlet理解的角度不同了&#xff0c;最初只是学习了如何写一个servlet&#xff0c;api怎么用&#xff0c;现在从更深处了解了…

办公室“暧昧”的几种结局。

暧昧结局一&#xff1a;以消散结尾 外贸公司职员小雨 p: [( I J( n, i/ L( L 那是我刚来这家公司的时候&#xff0c;参加面试时我就关注到其中一个面试我的男人长得不错&#xff0c;言谈举止也都很儒雅&#xff0c;所以第一面就留下了深刻印象。等到我被录取正式上班后…

Matlab与机器学习-- 数据的归一化

本文介绍了Matlab对数据归一化的处理函数mapminmax。

ASP.NET中的母版页

ASP.NET中的母版页 添加一个"母版页",使用<asp:ContentPlaceHolder>挖坑,新建的母版页已经自动设置了两个ContentPlaceHolder创建使用母版页的具体页面,WebSite是新建"Web窗体"的时候勾选"选择模板页",WebApplication是新建"Web内容窗…

servlet必知细节(二)--servlet执行过程

servlet必知细节(二)--servlet执行过程 我们知道&#xff0c;servlet没有main函数&#xff0c;那么&#xff0c;servlet是怎么调用的呢&#xff1f;实际上&#xff0c;servlet 是由tomcat调用的&#xff0c;tomcat调用servlet程序执行。由调用栈可以看到&#xff0c;当一个请求…

workerman源码分析之启动过程

2019独角兽企业重金招聘Python工程师标准>>> http://www.cnblogs.com/CpNice/p/4714182.html 转载于:https://my.oschina.net/yonghan/blog/898076

MD5加密方法

/**//// <summary>/// 16位MD5加密方法/// </summary>/// <param name"str">原文</param>/// <returns>密文</returns>publicstaticstringgetMd5(stringstr){ MD5CryptoServiceProvider md5 new MD5CryptoServiceProvider()…

如何教计算机认识手写数字(上)

本图文介绍了一种简单的教会计算机识别手写数字的方法。

servlet必知细节(三)-- DefaultServlet

servlet必知细节&#xff08;三&#xff09;-- DefaultServlet 缺省servlet&#xff1a;org.apache.catalina.servlets.DefaultServlet&#xff0c;作用是处理其他servlet处理不到的请求 我们知道&#xff0c;在我们工程的web.xml中&#xff0c;会配置servlet映射&#xff0c…

第五篇:Visual Studio 2008 Web开发使用的新特性

第五篇&#xff1a;Visual Studio 2008 Web开发使用的新特性 本篇翻译自MSDN。 .NET Framwork 3.5与Visual Studio 2008 包含很多新特性。AJAX的Web开发人员支持与综合查询语言&#xff08;LINQ&#xff09;是其中最重要的更新。此外还包含一些新的服务器端控件以及客户端对象库…

Jenkins使用Publish Over FTP Plugin插件上传FTP详解

一、安装插件【Publish Over FTP】 二、在【系统管理】->【系统设置】->【Publish over FTP】->点击【增加】按钮&#xff0c;增加一个要连接的FTP&#xff1a; FTP Server Name&#xff1a;FTP名字 Hostname&#xff1a;主机IP或者域名 Username&#xff1a;ftp登陆用…

Matlab与数据结构 -- 求向量或矩阵的最大值

本图文介绍了Matlab中求向量或矩阵最大值的方法。

web应用的绝对路径和相对路径

经常写web工程&#xff0c;就会涉及很多路径问题&#xff0c;今天复习下绝对路径和相对路径&#xff0c;以提醒自己下次不要以为路径问题头疼。 1.绝对路径和相对路径 相对路径&#xff1a;helloworld ./helloworld ../helloworld 这样的都是相对路径绝对路径&…

IE7外觀優化

众所周知&#xff0c;在Windows Vista的默认设置中&#xff0c;传统的文件菜单消失了&#xff0c;大部分过去通过菜单执行的任务如今由工具栏提供&#xff0c;或者在相应选择项的右键属性里。尽管这种改变使页面布局更简洁&#xff0c;但似乎许多用户并不认可或者至少说并不习惯…

使用GPUImageView录制视频保存后出现绿边

2019独角兽企业重金招聘Python工程师标准>>> 最近在使用GPUimageView做视频录制功能&#xff0c;录完后发现保存的视频右边有绿边&#xff0c;觉得好奇怪呀&#xff0c;为什么会这样呢&#xff1f;于是上网找资料&#xff0c;发现了这么一个说法&#xff1a;GPU和视…

Matlab与数据结构 -- 搜索向量或矩阵中非零元素的位置

本图文介绍了Matlab中搜索向量或矩阵中非零元素位置的方法。

jdk7新特性学习笔记

jdk7新特性学习笔记 从网络down了视频看&#xff0c;记录下学过的东西。1.二进制字面量 JDK7开始,可以用二进制来表示整数&#xff08;byte,short,int和long&#xff09;&#xff0c;语法&#xff1a;在二进制数值前面加 0b或者0B例如&#xff1a;int x 0b11112.数字字面量可以…

2008开年大礼:《Application = Code + Markup》中文版面世

Charles Petzold的又一部经典力作《Application Code Markup》中文版终于要面世了。成为2008 开年大礼。相信有很多对WPF有兴趣&#xff0c;但又苦于没有经典书籍来支撑的朋友都一直在期待着这本书的中文版上市&#xff0c;博文视点让这一期待成为现实。 与大家一样都很兴奋。…

近一个月的学习总结(4.8—5.12)

Java-se基础知识的学习已经告一段落&#xff0c;对自己这一个月的知识体系做一个大致的总结&#xff1a; 1.Java语言基础&#xff08;基础完成&#xff09; 2.面向对象基础&#xff08;封装、继承、多态&#xff09;&#xff08;基础完成&#xff09; 3.抽象类、接口&#xff0…

利用BP神经网络教计算机识别语音特征信号(代码部分SS)

本图文已经更新&#xff0c;详细地址如下&#xff1a; http://blog.csdn.net/lsgo_myp/article/details/54094884

springmvc配置DispatcherServlet拦截url注意事项

<!-- 前端控制器 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 加载springmvc配置 --><init-param><param-name>contex…

sql server面试题

本面试题由2344095 (有心人)整理, 由ashzs((可以包含中文字符)) 解答,感谢二位!1.磁盘柜上有14块73G的磁盘&#xff0c; 数据库为200G 大小包括日志文件&#xff0c;如何设置磁盘&#xff08;要说明这14磁盘是怎么用的&#xff09;&#xff1f;2.有两服务器群集&#xff0c;分别…

利用BP神经网络教计算机识别语音特征信号(代码部分SSR)

本图文已经更新&#xff0c;详细地址如下&#xff1a; http://blog.csdn.net/lsgo_myp/article/details/54094884