binarySearch, when key not found, return -low -1, where low means the position key should be insert