实验目的:
1、复习java编程;
2、掌握二分搜索技术的基本原理;
3、掌握使用java程序进行二分搜索的方法。
实验步骤:
1、由用户输入5个以上的整数;
2、利用二分搜索算法完成对数组的搜索。

package erfenfa;
import java.util.Scanner;
public class erfen
{
static int key;
public static void main(String[] args)
{
//数组的输入
System.out.println("请输入数组中的8个元素:");
int[] a=new int [8];
Scanner scan=new Scanner(System.in);
for(int i=0;i<8;i++)
{
a[i]=scan.nextInt();
} //要查找的元素输入
System.out.println("请输入要查找的元素:");
Scanner shu = new Scanner(System.in);
key= shu.nextInt(); /*数组的输出提示*/
System.out.print("你输入的数组是:\n");
for(int b=0;b<8;b++)
{
System.out.print("["+a[b]+"]"); }
/*查找元素输出提示*/
System.out.print("\n你要查找的元素是:\n");
System.out.print(key); /*最终结果的输出*/
System.out.println("\n目标数的数组下标是:"+binSearch(a, 0, a.length - 1));
} /*二分查找算法开始*/
public static int binSearch(int a[], int left, int right) {
int mid = (right - left) / 2 + left;
if (a[mid] == key) {
return mid;
}
if (left >= right) {
return -1; //在数组中没找到特定元素
} else if (key > a[mid]) {
return binSearch(a, mid + 1, right); //如果查找的数在数组右半段
} else if (key < a[mid]) {
return binSearch(a, left, mid - 1); //如果查找的数在数组左半段
}
return -1; //在数组中没找到特定元素
}
/*查找算法结束*/
}

结果如下:

用java实现二分搜索<算法分析>的更多相关文章

  1. Java数据结构与算法分析-第一章(引论)-Java中的范型<T,E>构件

    一.为什么需要使用范型? 官方的说法是:Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质 ...

  2. java 资料必备

    学习java个人以为必备的资料很多,边上课,边总结: 1.jdk API这个是必须的,什么资料都没有这个权威 2. javaJAVA 2核心技术7th 3. BJava就业培训教程张孝祥 4. thi ...

  3. 集合Collection总览

    前言 声明,本文使用的是JDK1.8 从今天开始正式去学习Java基础中最重要的东西--->集合 无论在开发中,在面试中这个知识点都是非常非常重要的,因此,我在此花费的时间也是很多,得参阅挺多的 ...

  4. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  5. 有关于二分搜索的常见问题(java实现)

    前言: 二分搜索是一个非常常见的面试题目,它具有非常广泛的用途.熟练的掌握二分搜索的基本形式和他的变式是非常重要的.接下来我们将使用java实现一些常见的有关二分搜索的问题. 具体内容: 1.二分搜索 ...

  6. 汉诺塔问题的算法分析与实现(Java)

    汉诺塔问题是源于印度一个古老传说的益智玩具.要求将圆盘从A柱移动到C柱规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 可以先通过3个盘子的hanoi游戏得出其算法步骤如下: if ...

  7. 《数据结构与算法分析-Java语言描述》 分享下载

    书籍信息 书名:<数据结构与算法分析-Java语言描述> 原作名:Data Structures and Algorithm Analysis in Java 作者: 韦斯 (Mark A ...

  8. [Java算法分析与设计]--顺序栈的实现

    在程序的世界,栈的应用是相当广泛的.其后进先出的特性,我们可以应用到诸如计算.遍历.代码格式校对等各个方面.但是你知道栈的底层是怎么实现的吗?现在跟随本篇文章我们来一睹它的庐山真面目吧. 首先我们先定 ...

  9. [Java算法分析与设计]--单向链表(List)的实现和应用

    单向链表与顺序表的区别在于单向链表的底层数据结构是节点块,而顺序表的底层数据结构是数组.节点块中除了保存该节点对应的数据之外,还保存这下一个节点的对象地址.这样整个结构就像一条链子,称之为" ...

随机推荐

  1. Person p = new Person("zhangsan",20);该句话都做了什么事情?

    1,因为new用到了Person.class.所以会先找到Person.class文件并加载到内存中.2,执行该类中的static代码块,如果有的话,给Person.class类进行初始化.3,在堆内 ...

  2. IOS利用Core Text对文字进行排版 - 转

    原贴地址:http://hi.baidu.com/jwq359699768/blog/item/5df305c893413d0a7e3e6f7b.html core text 这个包默认是没有的,要自 ...

  3. Windows 7操作系统下PHP 7的安装与配置(图文详解)

    前提博客 Windows 7操作系统下Apache的安装与配置(图文详解) 从官网下载           PHP的官网 http://www.php.net/         特意,新建这么一个目录 ...

  4. Spring注解驱动开发之扩展原理

    前言:现今SpringBoot.SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解.原理,比如@Conditional.@Import.@Ena ...

  5. JDK常用类解读--StringBuffer、StringBuilder

    上一篇博客讲到String对象一旦被创建该内容就不能被修改了如: String s = "hello world"; s.substring(6); s.replace(" ...

  6. (三)SpringIoc之初了解

    IoC:Inverse of Control(控制反转) 读作"反转控制",更好理解,不是什么技术,而是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来 ...

  7. (五)Mybatis总结之一对多、一对一

    一对多 业务场景:张三既是java开发师又是大学老师又是LOL代练,张三拥有多个角色. 1.创建实体类UserInfo和RoleInfo package com.qf.mybatisdemo.pojo ...

  8. Hibernate配置详解

    <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?xml version='1.0' ...

  9. 使用iconfont管理项目中的字体图标

    先来说说字体图标的好处: 很容易任意地缩放: 很容易地改变颜色: 很容易地产生阴影: 可以拥有透明效果: 一般来说,有先进的浏览器支持: 可以使用CSS来装饰(可以得到CSS很好支持): 可以快速转化 ...

  10. CentOS7 Install Consul

    Centos7 Install Consul 原文链接:http://www.cnblogs.com/caoguo/p/5959962.html 1) 环境 2) 安装 # yum install - ...