zoukankan      html  css  js  c++  java
  • 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());
           
        }
    }
  • 相关阅读:
    Sql server数据库设计 7
    day08作业
    day01作业
    day07作业.
    day05作业
    day04作业
    day02作业
    初学Java的一些注意事项
    day07作业
    Week03面向对象入门
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9848850.html
Copyright © 2011-2022 走看看