借鉴自http://blog.csdn.net/easyer2012/article/details/37871031
稀疏数组
用稀疏数组这样表示
然后关注下二分查找代码即可
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 }
SparseArray就是一个稀疏矩阵+二分查找、
原理:
SpaseArray是增序数组,然后在put的时候,会大规模的移动数组,所以调用了系统API System.ArrayCopy,比开for循环移动数组的一部分要快8倍。维护一个增序是为了二分查找。