package com.yuan.alg;

/**

* @author yuan

*这个程序是演示折半查找的例子。

*该算法是用递归实现的。

*前提条件是该数组必须是有序的。

*/

public class a001 {

/**

*

*/

public a001() {

// TODO Auto-generated constructor stub

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] Array={1,4,5,7,8,9,10,90,99,100}; //有序数列

int findvalue=101; //查找值。

//调用递归二叉树查找方法,将结果返回给result。

int result=binarysearch(Array,0,Array.length-1,findvalue);

if(result!=-1) //如果有结果,输出结果。

{

System.out.println("该数的下标是:"+result);

System.out.println("/n该数是第"+(result+1)+"个数!");

}

else //否则,输出提示

System.out.println("该值不存在!");

}

/**

* binarysearch方法实现了折半查找的功能,也和二叉树查找相似。

* 这是一个递归二叉树查找,在性能上有待提高,查找速度很快,特别适合有序的

* 数列的查找。

* 该算法的主旨:通过比较中间数与目标值的大小来改变查找方向。

* 若中间数比目标值大,向前查找;反之,向后查找。

* 不断执行这个方法,即递归,直到中间数与目标值相等;反之,若没有匹配的数,则返回

* null。

*

* */

public static int binarysearch(int array[],int first,int last,int value)

{

int index;

if(first>last) //first>last,不符合查找的条件。

{

return -1;

}

else

{

int mid=(first+last)/2; //求mid的值,为查找提供条件。

if(value==array[mid]) //值与中间值匹配。

{

index=mid; //接受mid。

}

else if(value

return binarysearch(array,first,mid-1,value);

else //若大,则向后查找。

return binarysearch(array,mid+1,last,value);

}

return index; //返回一个index,即结果。

}

}

java折半查找简述_折半查找(java版)相关推荐

  1. 二分查找的平均查找长度_二分查找(折半查找)代码实现

    整理不易,手有余香请点赞! 折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高.但是该算法的使用的前提是静态查找表中的数据必须是有序的. 在折半查找之前对查找表按照所查的关 ...

  2. 数据结构折半查找例题_数据结构查找习题及答案

    第九章 查找 一. 选择题 1. 若查找每个记录的概率均等, 则在具有 n 个记录的连续顺序文件中采用顺序查找法查找一 个记录,其平均查找长度 ASL 为 (    ) . A . (n-1)/2   ...

  3. java rpm 安装路径_如何查找rpm方式安装的软件路径

    首先要申明一下which java是定位不到安装路径的.which java定位到的是java程序的执行路径.网上的资料都是人云亦云,完全不去思考.那么怎么定位到java的安装路径呢?下面我们来看看例 ...

  4. java单链表例子_写一个java链表的例子?随便举例说一下。

    展开全部 //单链表类 package dataStructure.linearList; import dataStructure.linearList.Node; //导入单链表结点类 impor ...

  5. java 内部类 加载_举例讲解Java的内部类与类的加载器

    内部类 class A { //Inner1 要在 A 初始化后 才能使用,即要被A的对象所调用 class Inner1 { int k = 0; // static int j = 0; //A加 ...

  6. java整数的因式分解_如何在Java中找到整数的质数-因式分解

    java整数的因式分解 编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的素数因子是将精确地除以给定数字的所有素 ...

  7. python 查找算法_七大查找算法(Python)

    查找算法 -- 简介 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表(Search Table):由同一类型的数据元素构成的集合 关键字(Ke ...

  8. java加载机制_详解Java类加载机制

    一:ClassLoader 从JVM结构图中可以看到,类加载器的作用是将Java类文件加载到Java虚拟机. HotSpot JVM结构,图片来自Java Garbage Collection Bas ...

  9. java 密码加密 盐_有效提高java编程安全性的12条黄金法则

    安全性是软件开发中最复杂,最广泛和最重要的考量之一.Java是具有许多内置安全性功能的开发平台,java在长期的发展过程中,已经经过了很多高强度的安全测试,并经常更新安全漏洞.并且Java生态系统还包 ...

最新文章

  1. 利用BP神经网络教计算机识别语音特征信号(代码部分SL)
  2. wifi动不动就断开_手机信号满格,但是WIFI经常掉线!我来教你怎么办
  3. openssl在64位的机器上编译32位的库
  4. implementation ‘com.zxy.android:recovery:
  5. python代码需要背吗-20个Python代码段,你需要立刻学会,好用到哭!
  6. 计算机组成原理——程序查询方式、程序中断方式
  7. 远程服务器安装docker和docker-compose
  8. Java扑克牌(斗地主,手中牌的排序)【Comparator】
  9. 海量数据拆分到nosql系统的一种方案
  10. 简单的节流函数throttle
  11. D类IP地址和组播传输
  12. 优秀的电商精品素材就到优图
  13. 语音识别在生活中的七个经典应用
  14. 第三方服务挂了,如何保证服务不受影响?
  15. 【解决】UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xef in position 0: ordinal not in range(128
  16. 浙江卫视的万峰纯粹一烂人
  17. CentOS7 ECS使用(慕课网付费课笔记)
  18. 使用gltf-pipeline转换gltf、glb模型文件
  19. 基于微信小程序的个人健康打卡系统设计与实现-计算机毕业设计源码+LW文档
  20. python交通调查数据处理_Python突破高德API限制爬取交通态势数据+GIS可视化(超详细)...

热门文章

  1. c语言ascw,VBS中的Asc/AscB/AscW和Chr/ChrB/ChrW函数之间的区别
  2. Java错别字检查_java中关于异常的处理
  3. .net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个?
  4. python tkinter 弹窗_Python:tkinter-Parent获取弹出窗口的返回值
  5. memache的使用场景
  6. native版本 修改项目react_react native项目改名(仅针对android)
  7. 在浏览器中进行深度学习:TensorFlow.js (十二)异常检测算法
  8. jsp中引入js文件缓存问题解决
  9. docker第二天:管理docker镜像与容器(上)
  10. 巧妙设备MTU的大小,轻松提网速