您的位置:首页 > 编程语言 > Java开发

Java递归算法——二分查找

2016-04-07 09:39 981 查看


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开始到Num

public 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));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: