• Algs4-1.2.9使用Counter统计BinarySearch检查的key个数


    1.2.9修改BinarySearch(请见1.1.10.1节中的二分查找代码),使用Counter统计在有查找中被检查的键的总数并在查找全部结束后打印该值。提示:在main()中创建一个Counter对象并将它作为参数传递给rank()。
    答:
    图片
    BinarySearch Code:
    import java.util.Arrays;

    public class Test
    {
      public static void main(String[] args) 
      {
        int[] whitelist=In.readInts(args[0]);
        Arrays.sort(whitelist);
        Counter counterKey=new Counter("counterKey");
        while (!StdIn.isEmpty())
        {
            int key=StdIn.readInt();
            int indexOfWhite=rank(key,whitelist,counterKey);
        }
         StdOut.printf("BinarySearch check Key Counter is:%d ",counterKey.tally());
        }//end main
     
      public static int rank(int key,int[] a,Counter counterKey)
      {
          int lo=0;
          int hi=a.length-1;
          while(lo<=hi)
          {
              counterKey.increment();
              int mid=lo+(hi-lo)/2;
              if (key<a[mid]) hi=mid-1;
              else if(key>a[mid]) lo=mid+1;
              else return mid;
          }
          return -1;
      }
    }//end class Test


    ////////////////////////////////////
    Counter Code:
    public class Counter
    {
        private final String name;
        private int count;
        public Counter(String id)
        {
            name=id;
            count=0;
        }  
       
        public void increment()
        {
            count++;
        }
       
        public int tally()
        {
            return count;
        }
       
        public String ToString()
        {
            return count+ " " +name;
        }
       
        public static void main(String[] args)
        {
            Counter heads=new Counter("heads");
            Counter tails=new Counter("tails");
           
            heads.increment();
            heads.increment();
            tails.increment();
           
            StdOut.println(heads+" " + tails);
            StdOut.println(heads.tally() + tails.tally());
           
        }
    }
  • 相关阅读:
    QGraphicsItem鼠标旋转控制研究
    QT场景视图父子关系图元打印研究
    QT绘制B样条曲线
    [转]localhost、127.0.0.1和0.0.0.0和本机IP的区别
    [转]C++ 堆栈溢出的原因以及可行的解决方法
    C++运算符重载学习总结
    关于C++中使用++it还是it++的问题
    [转]QT中的D指针与Q指针
    Python图像处理库:Pillow 初级教程
    STEP-MXO2开发板 [STEP FPGA开源社区]
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9848850.html
Copyright © 2020-2023  润新知