import java.lang.reflect.Array;
import java.nio.Buffer;
import java.util.Arrays;
import java.util.Random;//=================================================
// File Name       :    RecFind
//------------------------------------------------------------------------------
// Author          :    Common//类名:BinarySearch_Find
//属性:
//方法:
class Rec_Find{private int[] temp;private int searchKey;//private int lowerBound = 0;          //下界//private int upperBound ;              //上界private int nElement;public int[] getTemp() {return temp;}public void setTemp(int[] temp) {this.temp = temp;}public Rec_Find(int[] temp) {//构造函数this.temp = temp;//this.upperBound = temp.length-1;}public int find(int searchKey,int lowerBound,int upperBound){int curNum;this.searchKey = searchKey;curNum = (lowerBound+upperBound)/2;if(temp[curNum]==this.searchKey){return curNum;                           //find}else if(lowerBound>upperBound){return -1;                                     //没有find}else{if(temp[curNum]<this.searchKey){return find(searchKey,curNum+1,upperBound);}else{return find(searchKey,lowerBound,curNum-1);}}}}//类名:RandomArrays
//属性:
//方法:
class RandomArray{                  //生成随机数组,有Num个private int[] Arrays;public int[] getArrays(int Num){
//      int[] Arrays = new int[Num];Arrays = new int[Num];Random r = new Random();for(int i=0;i<Num;i++){Arrays[i] = r.nextInt(1000);
//          System.out.print(Arrays[i]+"、");}return Arrays;}
}//类名:OrderedArrays
//属性:
//方法:
class OrderedArray{                 //生成有序数组,从0开始到Numpublic int[] getArrays(int Num){int[] Arrays = new int[Num];for(int i=0;i<Num;i++){Arrays[i] = i;
//          System.out.print(Arrays[i]+"、");}return Arrays;}
}//主类
//Function        :     RecFind
public class RecFind {public static void main(String[] args) {// TODO 自动生成的方法存根//       RandomArrays array_demo = new RandomArrays();
//      BinarySearch_Find arrays = new BinarySearch_Find(array_demo.getArrays(100));OrderedArray array_demo = new OrderedArray();Rec_Find arrays = new Rec_Find(array_demo.getArrays(100));System.out.println(Arrays.toString(arrays.getTemp()));System.out.println(arrays.find(55,0,100));}}

转载于:https://www.cnblogs.com/tonglin0325/p/5362215.html

Java递归算法——二分查找相关推荐

  1. Java实现二分查找及其优化

    在Java中常用的查找算法有四种: 1.顺序查找(不要求数组有序,挨个遍历进行比对): 2.二分查找(要求数组有序): 3.插值查找: 4.斐波那契查找 本文使用递归思想带来二分查找及其优化 二分查找 ...

  2. java实现二分查找-两种方式

    二分查找是一种查询效率非常高的查找算法.又称折半查找.起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来 辅助查询.本文就介绍两种方法二分查找算法思想有 ...

  3. Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置、局部最小值问题求解

    1. 二分查找 二分查找也是一种在数组中查找数据的算法.它只能查找已经排好序的数据.二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边.因此,比较一次就可以把查找范 ...

  4. java数组二分查找_java 13-1 数组高级二分查找

    查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行 ...

  5. Java实现二分查找算法

    二分查找(binary search),也称折半搜索,是一种在 有序数组 中 查找某一特定元素 的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元 ...

  6. java,二分查找法,网上查阅

    二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元 ...

  7. Java实现二分查找法

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表 ...

  8. 【JAVA】二分查找

    用二分查找来查找数组里出现的元素是一个高效率的查找,但它的局限性是  数组的元素必须有序 二分查找的原理就是:循环找数组的中间元素,如果要找的key比数组的中间元素小,就说明这个key可能在中间值的左 ...

  9. java数组二分查找的简单例题_Java基础-练习 数组元素二分查找(折半查找)

    图解: 二分折半查找使用前提是数组是有序. 题目分析: 通过观察发现,本题目要实现查找指定数值在元素有序的数组中存储的位置(索引),返回该位置(索引). 我们使用数组最中间位置的元素值与要查找的指定数 ...

最新文章

  1. 1501 二叉树最大宽度和高度
  2. 【翻译】HTML5开发——轻量级JSON存储解决方案Lawnchair.js
  3. php小程序地图处理,微信小程序 地图map详解及简单实例
  4. 合并单元格两行_Excel合并单元格的麻烦事你都经历了哪些?来一起远离那些麻烦事...
  5. mdkstc系列器件支持包下载_Qorvo PAC系列高集成度电机控制芯片及应用
  6. frida hook java层常用模板
  7. linux在文件或文件夹中查找字符串
  8. 丰巢回应小学生用照片“刷脸”取件;苹果明年或发布四款 5G 手机;Spring Boot 2.2.0 发布 | 极客头条...
  9. 路由事件(鼠标路由事件+键盘路由事件)
  10. git分支创建与合并
  11. Java小农养成记第七天
  12. 计算机如何安装cpu风扇,新手装电脑入门二:手把手学习如何安装CPU及散热风扇...
  13. 基于VB和单片机的智能家居监控系统设计
  14. 驱动开发:断链隐藏驱动程序自身
  15. 【Linux】~ 如何将本地文件(windows)复制(传输)到虚拟机中
  16. win7系统软件安装显示NSIS ERROR的解决方法
  17. 深夜磨刀,Linux Graphics Stack 概述 | Linux 驱动
  18. 2018考研数学一真题 ​​​
  19. 基于xilinx vivado 的DDR3 IP核扩展IP FDMA 的使用详解
  20. dreamweaver php 动态教程,利用DreamweaverCS5制作一个含有动态标题的教程

热门文章

  1. ssh证书登录(实例详解)
  2. 虚机如果要访问SAN中的多个LUN,如何实现高可用
  3. 【正一专栏】儿时的夏天——似水流年
  4. 模拟浏览器自动化测试工具Selenium之五Centos系统命令行下部署selenium环境试验
  5. sklearn快速入门教程:(一)准备工作
  6. 软件设计中的一些原则
  7. 命令行下的FTP使用详解
  8. ccf权限查询java_201612-3 ccf 权限查询
  9. HTML areamap标签及在实际开发中的应用
  10. CodeBlacks程序调试的那些事