对从小到大排好的数组,一定要 left=mid+1。否则,就会一直有left = mid=right-1<right,导致无法跳出循环。 对一个找不到的数(不在数组里),要是想取相邻的下标里,较大的那个,就要 写成:left=mid+1; right=mid; 要是想取较小的那个下标,就写成:left=mid+1; right=mid-1; 关于这两点知识,写的比较好的博客:传送门