android源码里面的二分法查找

2019-05-29  本文已影响0人  坠叶飘香

frameworks\base\core\java\android\util\ContainerHelpers.java

// This is Arrays.binarySearch(), but doesn't do any argument validation.
static int binarySearch(int[] array, int size, int value) {
  int lo = 0;
  int hi = size - 1;

  while (lo <= hi) {
    final int mid = (lo + hi) >>> 1;
    final int midVal = array[mid];

    if (midVal < value) {
      lo = mid + 1;
    } else if (midVal > value) {
      hi = mid - 1;
    } else {
      return mid;  // value found
    }
  }
  return ~lo;  // value not present
}
上一篇 下一篇

猜你喜欢

热点阅读