js 二分查找法之每日一更

摘要:
DOCTYPE html˃二进制搜索算法˂!
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html"/>
        <meta name="keywords" content="二分查找算法" />
        <meta name="description" content="二分查找算法" />
        <meta name="author" content="KG" />
        <meta charset="utf-8">
        <title>二分查找算法</title>
    </head>
    <body>
        <!-- 二分查找算法是一种高效的搜索算法,是一种可以在有序数组中搜索到特定的元素的算法 -->
        <!-- 二分查找法一般有俩方法,使用递归或不使用递归 -->
        <script>
            // 进行二分查找法必须是排序好的数组
            var data=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
            var targetNum=8;
            let start=0,
            end=data.length-1,//因为是计算index值,数组中最大的index是数组长度减1
            midIndex;
            function findNum(start,end,targetNum){
                midIndex=Math.ceil((start+end)/2)
                
                // 获取数组的中间值
                if(targetNum==data[midIndex]){
                    return '查找到的目标是:'+data[midIndex]+','+'该目标在数组中的索引值是:'+midIndex;
                }else if(targetNum>data[midIndex]){//此条件成立的话,说明,查找目标在数组的后半部分,所以应该改变查找的开始位置start的值
                    start=midIndex+1;//因为targetNum不等于数组中间位置的值,所以可以把开始位置往比中间位置往后移动一位,查找的结束位置不变;
                    return findNum(start,end,targetNum);//继续缩小范围搜索
                }else if(targetNum<data[midIndex]){//此条件成立的话,说明,查找目标在筛选范围的前半部分,应该改变查找位置的end的值
                    end=midIndex-1; //因为targetNum不等于搜索范围的中间值,所以把搜索范围的结束位置往前移动一位,查找的开始位置不变;
                    return findNum(start,end,targetNum);
                }else{
                    return '该目标在数组内查找不到!请重新输入';
                }
            } 
            console.log(findNum(start,end,targetNum))
        </script>
    </body>
</html>

免责声明:文章转载自《js 二分查找法之每日一更》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[julia][学习笔记]julia的安装jedis 和 redisson 有哪些区别?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Echarts(曲线图)

写在前面: 最近项目中用到了Echarts做趋势图,博主通过万能的度娘研究了一下。Echarts字段的使用基本都写在代码注释里了,这是博主的第一篇博客,如果哪里写的不好望大家见谅,最后希望本篇博客对大家有一些帮助。 1. 下载Echarts.js包 使用Echarts需要先下载Echarts.js包,大家可以从Echarts官网下载, 或者可以从博主提供的...

刚部署的程序加载不出来css,js以及图片

刚部署的程序加载不出来css,js以及图片,解决方式 需要在配置中加入静态资源 方法一: controller.xml中加入 <mvc:annotation-driven/> <mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources l...

移动端三合一瀑布流插件(原生JS)

没有前言,先上DEMO(手机上看效果更佳)和原码。 瀑布流形式的图片布局方式在手机等移动端设备上运用广泛,比较常见的是下面前两种: 一、等宽等高 这种形式实现起来非常容易,这里就不再多说。 二、等宽不等高 这种形式算是比较正统的瀑布流布局形式,关于如何实现的请参考之前的一篇博文——jQuery瀑布流详解。 三、等高不等宽 在之前的工作中接触到了这种形...

js小功能合集:计算指定时间距今多久、评论树核心代码、字符串替换和去除。

1.计算指定时间距今多久 var date1=new Date('2017/02/08 17:00'); //开始时间 var date2=new Date(); //当前时间 var date3=date2.getTime()-date1.getTime() //时间差的毫秒数 //计算出相差天数 var days=Math.floor(...

JS案例之8——从一个数组中随机取数

近期项目中遇到一个需求,从一个列表中随机展示列表的部分内容,需求不大,JS也非常容易实现。主要是运用到了Math对象的random方法,和Array的splice方法。 思路是先新建一个数组,存放所有的列表,然后算出随机数,从数组中取出这个随机索引对应的值,然后组成一个随机数组。 源代码如下: 1 <!DOCTYPE html> 2 <...

关于js判断鼠标移入元素的方向——上下左右

一开始我是这么想的,将待移入的元素分割四块,用mousemove获取第一次鼠标落入的区域来判断鼠标是从哪个方向进去的。 所以只要写个算法来判断鼠标的值落入该元素的区域就可以得出鼠标移入的方向,如下图: 对于数学不太好的我,只能上网找下看有没有人解决了。找到了如下这段: var x = (e.pageX - this.offsetLeft - (w / 2...