力扣 :二分法
题目描述:
目前在力扣题库中与二分法相关的题目占据了一大部分,不论怎样的题目坚实的思想才是解决问题的根本;
今天就以整数二分为例来分析一下,通过使用二分法查找 target 在单调数组出现的位置·;
示例:
输入:[2,3,6,8,9,12,45] target:6
输出:2
输入:[4,6,12,45,78,98] target:78
输出:4
综合解法(javascript实现):
console.log('使用二分法查找元素在单调数组中的位置');
var integer_arr=[2,3,5,6,7,9,12,34];
var target=34;
var start_index=0,end_index=integer_arr.length-1;
var res_index;
while(start_index!=end_index){
var mid_index=Math.floor((start_index+end_index)/2);
if(integer_arr[mid_index]==target){
res_index=mid_index;
break;
}else if(integer_arr[mid_index]>target){
end_index=mid_index-1;
}else if(integer_arr[mid_index]<target){
start_index=mid_index+1;
}
}
//情况一:由while条件不满足跳出的循环
if(start_index==end_index){
res_index=end_index;
}
//情况二:由中间的integer[mid_index]==target引起的跳出循环
if(integer_arr[res_index]==target){
console.log(`${target}所在位置索引:${res_index}`);
}else{
console.log('不存在该元素');
}
总结:二分法关键在于两个关键位置的确定,一个是开始位置,一个是结束位置,每次只要满足大于或小于
目标值就相对把结束位置置为上一次中间位置-1或把开始位置置为上次中间位置+1即可,把握住关键
点解决问题就轻而易举;
一步一个脚印!!!继续加油
版权声明:本文为博主原创文章,如需转载,请标明出处。

浙公网安备 33010602011771号