java学习之—递归实现二分查找法
/**
* 递归实现二分查找法
* Create by Administrator
* 2018/6/21 0021
* 上午 11:25
**/
class OrdArray{
private long[] a;
private int nElems; public OrdArray(int max){
this.a = new long[max];
this.nElems = 0;
} public int size(){
return nElems;
} public long find(long searchKey){
return recFind(searchKey,0,nElems-1);
} private long recFind(long searchKey, int lowerBound, int upperBound) {
int curIn = (lowerBound+upperBound)/2;
if(a[curIn] == searchKey){
return a[curIn];
}else if(lowerBound > upperBound){
return 0;
}else {
if(a[curIn] < searchKey){
return recFind(searchKey,curIn+1,upperBound);
}else{
return recFind(searchKey,lowerBound,curIn-1);
}
}
} public void insert(long value){
int j;
for (j=0; j<nElems; j++){
if(a[j] > value){
break;
}
}
for (int i = nElems; i > j; i--) {
a[i] = a[i-1];
}
a[j] = value;
nElems++;
} public void display(){
for (int i = 0; i <nElems ; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
}
public class BinarySearch { public static void main(String[] args) {
int maxSize = 100;
OrdArray array = new OrdArray(maxSize);
array.insert(72);
array.insert(90);
array.insert(45);
array.insert(126);
array.insert(99);
array.insert(144);
array.insert(27);
array.insert(135);
array.insert(81);
array.insert(108);
array.insert(9);
array.insert(117);
array.insert(36); array.display(); int searchKey = 27;
long result = array.find(searchKey);
System.out.println("返回结果:"+result+" (0表示未找到)"); } }

java学习之—递归实现二分查找法的更多相关文章
- 二分查找法(binary search)
二分查找法:一种在有序列表中查找某个值的算法,它每次都将待查找的空间分为两半,在其中一般继续查找. 使用二分查找的前提是:已经排序好的列表.否则,sum对其查找的结果不做保证. 代码实现: // 使用 ...
- 学习练习 java 二分查找法
package com.hanqi; import java.util.*; public class Test5 { public static void main(String[] args) { ...
- java二分查找法
//二分查找法.必须有前提:数组中的元素要有序. public static int halfSeach_2(int[] arr,int key){ int min,max,mid; min = ; ...
- java for循环和数组--冒泡排序、二分查找法
//100以内与7相关的数 for(int a=1;a<=100;a++){ if(a%7==0||a%10==7||a/10==7){ System.out.print(a+ ...
- 二分查找法 java
前几天去面试,让我写二分查找法,真是哔了狗! 提了离职申请,没事写写吧! 首先二分查找是在一堆有序的序列中找到指定的结果. public class Erfen { public static int ...
- Java冒泡排序,二分查找法
冒泡排序 int[] arr = {1,7,6,2,8,4}; int temp ; //只需 运行 5次 for (int i = 0; i < arr.length - 1; i++) { ...
- 二分查找法(java版)
二分查找法也称为折半查找法,在有序的序列中使用二分法可以提高程序的执行效率. 典型的二分查找法代码 public int binarySearch1(int[] arr,int target){ in ...
- 选择、冒泡排序,二分查找法以及一些for循环的灵活运用
import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...
- 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC
[送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...
随机推荐
- 【vue】vue +element 搭建项目,this.$nextTick用法
相关资料:https://www.cnblogs.com/leaf930814/p/7247478.html https://www.cnblogs.com/duanyue/p/7458340.htm ...
- WiFi-ESP8266入门http(3-2)网页认证上网-post请求
测试账号密码 加密模式 1 18011210338 + 015871 - 测试2 1601120382 +1 mimaHENFuzb -1 打开网页 手机端 http://1 ...
- vue 热加载问题
今天是使用vue突然发现没有热加载功能了,然后网上查了一下,配置了一些东西,并没有什么用,然后发现电脑FQ影响 vue 热加载 关掉FQ软件就好了,具体原理我也不清
- 圆角矩形shader
在游戏中,有时需要对一张矩形图片进行切割,绘制成圆角矩形. circelrect.vert attribute vec4 a_position; attribute vec4 a_normal; at ...
- python读取/创建XML文件
Python中定义了很多处理XML的函数,如xml.dom,它会在处理文件之前,将根据xml文件构建的树状数据存在内存.还有xml.sax,它实现了SAX API,这个模块牺牲了便捷性,换取了速度和减 ...
- H5 71-网易注册界面4
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CPU-bound(计算密集型) 和I/O bound(I/O密集型)
概念 概念I/O系统,英文全称为“Input output system”,中文全称为“输入输出系统”,由输入输出控制系统和外围设备两部分组成,是计算机系统的重要组成部分.在计算机系统中,通常把处理器 ...
- c++入门之类继承初步
继承是面向对象的一种很重要的特性,先来复习基类的基本知识: 先上一段代码: # ifndef TABLE00_H # define TABLE00_H # include "string&q ...
- c++入门之运算符重载
c++函数重载:可以将一个函数名用于不同功能的函数.从而处理不同的对象.对于运算符,同样也有这样的用途,即对同一个标志符的运算符,可以运用到不同的功能中去. 首先引入:运算符重载,在C语言中甚至都有运 ...
- 关于oracle设置主键自增的问题
关于orcale设置主键自增的问题 关于主键Oracle中并没有提供一个直接的语句设置,对于这个oralce一般都是用序列和触发器来实现 一下又两种方法来实现 一 ,不使用触发器 创建序列: crea ...