前提:数组中的元素已经排好序
//low和high分别表示当前查找的数组的第一个下标和最后一个下标public static int binarySearch(int[] list, int key) {int low = 0;int high = list.length - 1;while (high >= low) {//不能用>代替>=,当只有一个元素且就是需要寻找的元素时会漏掉int mid = (low + high) / 2;if (key < list[mid])high = mid - 1;else if (key == list[mid])return mid;elselow = mid + 1;}return -low - 1;//没有找到匹配的元素时,low是一个插入点,不能直接返回low,当需要寻找的元素小于list[0]时,-low就是0,矛盾}
