算法-二分查找

今天在看 SparseArray 源码的时候看到了很多地方都用到了 ContainerHelpers.binarySearch(mKeys, mSize, key) 方法

ContainerHepler 类位于:android.util

源码:

 1     static int binarySearch(int[] array, int size, int value) {
 2         int lo = 0;
 3         int hi = size - 1;
 4 
 5         while (lo <= hi) {
 6             final int mid = (lo + hi) >>> 1;
 7             final int midVal = array[mid];
 8 
 9             if (midVal < value) {
10                 lo = mid + 1;
11             } else if (midVal > value) {
12                 hi = mid - 1;
13             } else {
14                 return mid;  // value found
15             }
16         }
17         return ~lo;  // value not present
18     }

 

posted @ 2017-03-08 15:00  熠然  阅读(178)  评论(0编辑  收藏  举报