`
danielhjd
  • 浏览: 243263 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java程序中“两分法”查找数据

    博客分类:
  • Java
阅读更多
package Daniel;

import java.util.Scanner;

public class DoSearch {

	public static int bisSearch(int target){
		int[] a={2,3,5,7,12,15,18,36,45,67,74,87,88};
		int btm=0;
		int top=a.length;
		int mid=(btm+top)/2;
		while(a[mid]!=target){
			int old_mid = mid;
			if(a[mid]>target){
				top=mid;
			}else{
				btm=mid;
			}
			mid=(btm+top)/2;
			int new_mid=mid;
			
			if(old_mid==new_mid){
				return -1;
			}
		}
		
		return mid;
	}
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入你想查找的数: ");
		int a=sc.nextInt();
		int index= bisSearch(a);
		System.out.println(index);
		if (index==-1){
			System.out.println("序列中没有您要查找的数,请确认输入正确。");
		}else{
			System.out.println("所查找的数所在位置为:第"+(index+1)+"位");
		}
	}

}

 

这里关键是while(){}循环语句的使用:

while(a[mid]!=target){
			int old_mid = mid;
			if(a[mid]>target){
				top=mid;
			}else{
				btm=mid;
			}
			mid=(btm+top)/2;
			int new_mid=mid;
			
			if(old_mid==new_mid){
				return -1;
			}

 

这里 mid的值 不断的改变 所以a[mid]不断的变化...来促使while(){}的循环和终止... index是一串有序的数值..

 

 

分享到:
评论

相关推荐

    java源码包2

     Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket...

    Java数据结构和算法中文第二版(1)

    完整的tree.java程序 哈夫曼(Huffman)编码 小结 问题 实验 编程作业 第9章 红-黑树 本章讨论的方法 平衡树和非平衡树 使用RBTree专题applet 用专题applet做试验 旋转 插入一个新节点 删除 红-黑树...

    Java范例开发大全 (源程序)

     实例213 二分查找法的实现方法 377  实例214 模拟操作系统的进程调度 379  实例215 利用栈将字符串逆序输出 381  实例216 动态的数组链表 382  实例217 你能猜出鱼是谁的宠物吗? 387  实例218 使用...

    Java范例开发大全(全书源程序)

    实例213 二分查找法的实现方法 377 实例214 模拟操作系统的进程调度 379 实例215 利用栈将字符串逆序输出 381 实例216 动态的数组链表 382 实例217 你能猜出鱼是谁的宠物吗? 387 实例218 使用Collections类对...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    java范例开发大全

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...

    java范例开发大全源代码

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12 ...

    java常用工具类的使用

    “工欲善其事,必先利其器”,在Java程序开发过程中,很多算法(比如:MD5加密算法)、很多数据结构(比如链表LinkedList)已经实现并且大多放在类库的java.util包中,程序员只需要了解各种工具的功能就可以直接调用...

    程序设计基础答案

    使用对分查找法查找值为90的元素时, 查找成功所进行的比较次数是( )。 A)1 B)2 C)3 D)4 30.下面叙述正确的是( )。 A)栈不能进行插入元素的操作,而队列可以。 B)栈和队列都不能在中间位置进行插入操作。...

    java范例开发大全(pdf&源码)

    实例213 二分查找法的实现方法 377 实例214 模拟操作系统的进程调度 379 实例215 利用栈将字符串逆序输出 381 实例216 动态的数组链表 382 实例217 你能猜出鱼是谁的宠物吗? 387 实例218 使用Collections类对List的...

    每天坚持两道题,整理数据结构与算法相关代码.zip

    排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法,分支限界...

    算法导论(part1)

    书中的算法以英语加伪代码的形式给出,只要有一点程序设计经验的人都能读懂,并可以用任何计算机语言(如C/C++和Java等)方便地实现。在书中,作者将算法的讨论集中在一些比较现代的例子上,它们来自分子生物学(如...

    算法第四版-PDF-网盘链接

     1.1.1 Java程序的基本结构 4  1.1.2 原始数据类型与表达式 6  1.1.3 语句 8  1.1.4 简便记法 9  1.1.5 数组 10  1.1.6 静态方法 12  1.1.7 API 16  1.1.8 字符串 20  1.1.9 输入输出 21...

    《算法》中文版,Robert Sedgewick,塞奇威克

    1.1.1 Java程序的基本结构 1.1.2 原始数据类型与表达式 1.1.3 语句 1.1.4 简便记法 1.1.5 数组 1.1.6 静态方法 1.1.7 API 1.1.8 字符串 1.1.9 输入输出 1.1.10 二分查找 1.1.11 展望 1.2 数据抽象 1.2.1...

    易语言程序免安装版下载

     静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被分别...

Global site tag (gtag.js) - Google Analytics