zoukankan      html  css  js  c++  java
  • 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开始到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));
    	}
    	
    	
    
    }
    
  • 相关阅读:
    银行家算法实例(转)
    DNS中的七大资源记录介绍!(转)
    android之存储篇_SQLite数据库_让你彻底学会SQLite的使用(转)
    回顾HTML5的语义化元素
    vueJs2.0学习笔记(六)
    vueJs2.0学习笔记(五)
    vueJs的学习笔记(四)
    vueJs2.0学习笔记(三)
    vueJs的学习笔记(二)
    vueJs 2.0学习笔记(一)
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5362215.html
Copyright © 2011-2022 走看看