zoukankan      html  css  js  c++  java
  • 力扣 :二分法

    题目描述:

      目前在力扣题库中与二分法相关的题目占据了一大部分,不论怎样的题目坚实的思想才是解决问题的根本;

      今天就以整数二分为例来分析一下,通过使用二分法查找 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即可,把握住关键

       点解决问题就轻而易举;

       一步一个脚印!!!继续加油

    版权声明:本文为博主原创文章,如需转载,请标明出处。

  • 相关阅读:
    面向对象之设计模式大全
    JDK各版本新增的主要特性
    迷宫最短路径-货郎担问题的解决思路
    详细介绍Java垃圾回收机制
    并发编程与任务建模
    淘宝npm镜像使用方法
    Metrics-Java版的指标度量工具
    Velocity基本语法
    Git之”make sure you have the correct access…”
    Mysql的转义字符
  • 原文地址:https://www.cnblogs.com/gamecc666/p/14600699.html
Copyright © 2011-2022 走看看