首页 > 编程语言 > 详细

字符串数组使用二分查找

时间:2019-07-15 12:32:53      阅读:91      评论:0      收藏:0      [点我收藏+]

 

 

String[] name = new String[5];
name[0] = "11";
name[1] = "22";
name[2] = "33";
name[3] = "44";
//name[4] = "55";

 

 

//数组如果是满的二分查找则不会经过数组中的null值,反之则一定会用null值调方法作比较
String search = "55";
if(Arrays.binarySearch(name, search) >= 0) {  <——java.lang.NullPointerException
  for (int j = Arrays.binarySearch(name, search); j < name.length - 1; j++) {
  name[j] = name[j + 1];
  }
  name[name.length - 1] = null;
}else {
  System.out.println("没找到相应元素");
}

 

 

private static int binarySearch0(Object[] a, int fromIndex, int toIndex,Object key) {
  int low = fromIndex;
  int high = toIndex - 1;

 

  while (low <= high) {
    int mid = (low + high) >>> 1;
    @SuppressWarnings("rawtypes")
    Comparable midVal = (Comparable)a[mid];
    @SuppressWarnings("unchecked")
    int cmp = midVal.compareTo(key);  <——有可能会使用数组中arr[4]null值调用方法

 

    if (cmp < 0)
      low = mid + 1;
    else if (cmp > 0)
      high = mid - 1;
    else
      return mid; // key found
    }
    return -(low + 1); // key not found.
  }

 

字符串数组使用二分查找

原文:https://www.cnblogs.com/qian202118/p/11188105.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!