//左侧索引小于右侧, i = j, 也可以, 代表我们的遍历还是有元素的 while (i <= j) { let mid = i + Math.floor((j-i)/2); if (arr[mid] >= target) { ret = mid; j = mid - 1; } else { i = mid + 1 } }
//step3: 我们整理成完整的方法
functionfindPosition(arr, target) { let l = arr.length; let i = 0, // 最左侧的位置 j = l - 1; //最右侧的位置 let ret = l; while (i <= j) { let mid = i + Math.floor((j-i)/2);//可以使用位移的方法, >> let mid = i + (j-i>>1); //注意运算符优先级 位移操作的优先级是小于 + - 的 if (arr[mid] >= target) { ret = mid; j = mid - 1; } else { i = mid + 1 } }