Java递归算法——二分查找
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递归算法——二分查找相关推荐
- Java实现二分查找及其优化
在Java中常用的查找算法有四种: 1.顺序查找(不要求数组有序,挨个遍历进行比对): 2.二分查找(要求数组有序): 3.插值查找: 4.斐波那契查找 本文使用递归思想带来二分查找及其优化 二分查找 ...
- java实现二分查找-两种方式
二分查找是一种查询效率非常高的查找算法.又称折半查找.起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来 辅助查询.本文就介绍两种方法二分查找算法思想有 ...
- Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置、局部最小值问题求解
1. 二分查找 二分查找也是一种在数组中查找数据的算法.它只能查找已经排好序的数据.二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边.因此,比较一次就可以把查找范 ...
- java数组二分查找_java 13-1 数组高级二分查找
查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行 ...
- Java实现二分查找算法
二分查找(binary search),也称折半搜索,是一种在 有序数组 中 查找某一特定元素 的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元 ...
- java,二分查找法,网上查阅
二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元 ...
- Java实现二分查找法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表 ...
- 【JAVA】二分查找
用二分查找来查找数组里出现的元素是一个高效率的查找,但它的局限性是 数组的元素必须有序 二分查找的原理就是:循环找数组的中间元素,如果要找的key比数组的中间元素小,就说明这个key可能在中间值的左 ...
- java数组二分查找的简单例题_Java基础-练习 数组元素二分查找(折半查找)
图解: 二分折半查找使用前提是数组是有序. 题目分析: 通过观察发现,本题目要实现查找指定数值在元素有序的数组中存储的位置(索引),返回该位置(索引). 我们使用数组最中间位置的元素值与要查找的指定数 ...
最新文章
- 1501 二叉树最大宽度和高度
- 【翻译】HTML5开发——轻量级JSON存储解决方案Lawnchair.js
- php小程序地图处理,微信小程序 地图map详解及简单实例
- 合并单元格两行_Excel合并单元格的麻烦事你都经历了哪些?来一起远离那些麻烦事...
- mdkstc系列器件支持包下载_Qorvo PAC系列高集成度电机控制芯片及应用
- frida hook java层常用模板
- linux在文件或文件夹中查找字符串
- 丰巢回应小学生用照片“刷脸”取件;苹果明年或发布四款 5G 手机;Spring Boot 2.2.0 发布 | 极客头条...
- 路由事件(鼠标路由事件+键盘路由事件)
- git分支创建与合并
- Java小农养成记第七天
- 计算机如何安装cpu风扇,新手装电脑入门二:手把手学习如何安装CPU及散热风扇...
- 基于VB和单片机的智能家居监控系统设计
- 驱动开发:断链隐藏驱动程序自身
- 【Linux】~ 如何将本地文件(windows)复制(传输)到虚拟机中
- win7系统软件安装显示NSIS ERROR的解决方法
- 深夜磨刀,Linux Graphics Stack 概述 | Linux 驱动
- 2018考研数学一真题 ​​​
- 基于xilinx vivado 的DDR3 IP核扩展IP FDMA 的使用详解
- dreamweaver php 动态教程,利用DreamweaverCS5制作一个含有动态标题的教程