zoukankan      html  css  js  c++  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<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表示未找到)");
    
        }
    
    }
    

      

  • 相关阅读:
    习题8-8 判断回文字符串
    Field笔记
    Object类中的方法
    字符和字节的区别
    Layui搜索设置每次从第一页开始
    Springboot+Jpa+Layui使用Pageable工具进行数据分页
    Map<String, Object>返回类型
    List集合中剔除重复的数据
    Springboot+Mybatis(Mysql 、Oracle) 注解和使用Xml两种方式批量添加数据
    MySql中group_concat函数的使用
  • 原文地址:https://www.cnblogs.com/chancy/p/9208946.html
Copyright © 2011-2022 走看看