java二分查找递归_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
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
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二分查找递归_java学习之—递归实现二分查找法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器人总动员最后的bgm_引导你欣赏《机
- 下一篇: 一维数组求最大值,和三元运算符运算源码