标签:=== var 12px ali width div 二分查找 font 循环
var start = 0; var end = nums.length - 1; // 初始条件 var mid = 0; while(start <= end) { // 循环条件 mid2 = Math.floor((start + end) / 2); // 取整方式 if (target > nums[mid]) { // 判断条件 start = mid + 1 // 判断条件 } else if (target < nums[mid]) { // 判断条件 end = mid - 1 // 判断条件 } else { // 判断条件 return mid //判断条件 } } return -1 //收尾
条件\区间 | ( )开区间 | (] 左开右闭 | [) 左闭右开 | [] 闭区间 | ||||
任意一点 | 任意一点 | 任意一点 | 任意一点 | 最左的点 | 最右的点 | |||
初始条件 | start |
-1 |
-1 |
0 |
0 |
|||
end |
nums.length |
nums.length-1 |
nums.length |
nums.length-1 |
||||
循环条件 |
start < end - 1 |
start < end |
start < end |
start <= end |
start < end |
start < end |
||
最后一次循环 |
(a,b,c) |
(a,b] |
[a,b) |
[a] |
[a,b] |
[a,b] |
||
取整方式 | 向上/向下 | 向上 |
向下 |
向上/向下 | 向下 | 向上 | ||
判断条件 |
target > nums[mid] |
start = mid |
start = mid |
start = mid+1 |
start = mid+1 |
start = mid+1 |
start = mid |
|
target === nums[mid] |
return mid |
return mid |
return mid |
return mid |
end = mid |
|||
target < nums[mid] |
end = mid |
end = mid-1 |
end = mid |
end = mid-1 |
end = mid-1 |
|||
收尾retrun |
-1 |
-1 | -1 | -1 |
nums[end] === target ? end : -1 或 nums[start] === target ? start : -1 |
标签:=== var 12px ali width div 二分查找 font 循环
原文地址:https://www.cnblogs.com/natsu07/p/10351118.html