zoukankan      html  css  js  c++  java
  • page61-将二分查找重写为一段面向对象的程序

    1 将二分查找重写为一段面向对象的程序 (用于在整数集合中进行查找的一种抽象数据类型)

    public class StaticSETofInts 【API】

      StaticSETofInts(int[] a )根据 a[]中的所有值创建一个集合

      boolean contains(int key) key是否存在于集合中。

    【数据实现】

    import java.util.Arrays;
    
    public class StaticSETofInts {
        
        private int[] a;
        public StaticSETofInts(int[] keys){
            
            a = new int[keys.length];
            for (int i = 0; i < keys.length; i++) 
                a[i] = keys[i];//保护性复制
            Arrays.sort(a);
        }
    
        public boolean contains(int key){
            return  rank(key) != -1;
        }
        
        private int rank(int key){//二分查找
            
            int low = 0;
            int high = a.length -1;
            while(low <= high){ //要么存在于a[low..high]中, 要么不存在。
                
                int mid = (low + high) /2;
                if(key < a[mid]) high = mid -1;
                else if(key > a[mid]) low  = mid + 1;
                else return mid;
            }
            return -1;
        }
    }

    【典型测试用例】

    public class Whitelist {
        
        public static void main(String[] args) {
            
            int[] w = new In(args[0]).readAllInts();
            StaticSETofInts set = new StaticSETofInts(w);
            
            while(!StdIn.isEmpty()){
                int key = StdIn.readInt();
                if(!set.contains(key)) System.out.println(key);
            }
        }
    }

    【打印结果】

  • 相关阅读:
    oc 基本基础类型之NSString
    oc 内存管理
    自定义的init方法和重写的init方法
    property属性
    iOS 开发朗读文字
    获取当前最顶层的ViewController
    二维码扫描的简单封装
    OC百度导航类的封装
    OC上传图片的封装(配合AFNetWorkiing)
    集成百度地图报错41个解决方法(转)
  • 原文地址:https://www.cnblogs.com/pacoson/p/4003945.html
Copyright © 2011-2022 走看看