算法(第4版本)1.1.29

来源:互联网 发布:广东软件评测中心 编辑:程序博客网 时间:2024/05/18 03:21

等值键

为BinarySearch类添加一个静态方法rank(),它接受一个键和一个整型有序数组(可能存在重复键)作为参数并返回数组中小于该键的元素数量,以及一个类似的方法count()来返回数组中等于该键的元素的数量。注意:如果i和j分别是rank(key,a)和count(key,a)的返回值,那么a[i..i+j-1]就是数组中所有和可以相等的元素。

(我怎么看它后面的注意,应该count方法是返回“大于该键的元素数量”呢)


private static void test29(){      int key = 2;      int[] a = {0, 1, 1, 1, 2, 3, 4, 5, 6, 7};      int result1 = rank2(key, a);      System.out.println("result1 = " + result1);}    //最大的,小于key的数的index+1  private static int rank2(int key, int[] a){      int count = 0;      int lo = 0;      int hi = a.length - 1;      while(lo <= hi){          int mid = lo + (hi - lo) / 2;          System.out.println("a[" + mid + "] = " + a[mid]);          if(key <= a[mid]){               hi = mid - 1;          } else if(key > a[mid]){              count = mid + 1;              lo = mid + 1;          }          System.out.println("lo = " + lo + ", hi = " + hi);      }            return count;}


0 0
原创粉丝点击