算法-二分查找
今天在看 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 }
直面挑战,躬身入局