• 二分查找法优缺点:


    数组有序的情况下:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <script type="text/javascript">
                //顺序必须有序
                 var num = 100000;
                 var randomNum = Math.ceil(Math.random()*num);
                 document.title = randomNum;
                 var arr = [];
                 for(var i = 0 ;i<num;i++)
                 {
                     arr.push(i)
                 }
                 console.log(randomNum);
                  //======第一种方式=========
                 function show1(arr,randomNum)
                 {
                     console.time(2)
                       for (var i = 0; i <arr.length; i++) {
                           if(arr[i] === randomNum)
                           {
                               console.timeEnd(2);
                               return arr[i];
                           }
                       }
                 }
                 show1(arr,randomNum);
                 //======第二种方式=========
                 function show(arr,randomNum)
                 {
                     console.time(1)
                     var first = 0;
                     var last = arr.length -1;
                     
                     while(first <= last)
                     {
                         var mindex = Math.floor((first + last)/2);
                         if(randomNum < arr[mindex]) //大于中间值
                         {
                             last = mindex -1;
                         }else if(randomNum > arr[mindex]){
                             first = mindex +1;
                         }else{
                             console.timeEnd(1)
                              return arr[mindex];
                         }
                     }
                 }
                 console.log(show(arr,randomNum));
            </script>
        </body>
    </html>

    数组无序的情况下:

    使用二分 先把数组排列成有序------然后二分  所花的时间比  普通for循环的时间要长

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <script type="text/javascript">
                //顺序必须有序
                 var num = 100000;
                 var randomNum = Math.ceil(Math.random()*num);
                 document.title = randomNum;
                 var arr = [];
                 for(var i = 0 ;i<num;i++)
                 {
                     arr.push(i)
                 }
                 //无序的排序
                 arr.sort(function(){
                     return Math.random() -0.5;
                 })
                 console.log(randomNum);
                  //======第一种方式=========
                 function show1(arr,randomNum)
                 {
                     console.time(2)
                       for (var i = 0; i <arr.length; i++) {
                           if(arr[i] === randomNum)
                           {
                               console.timeEnd(2);
                               return arr[i];
                           }
                       }
                 }
                 show1(arr,randomNum);
                 //======第二种方式=========
                 function show(arr,randomNum)
                 {
                     console.time(1)
                     arr.sort(function(n1,n2){
                         return n1 -n2;
                     })
                     var first = 0;
                     var last = arr.length -1;
                     
                     while(first <= last)
                     {
                         var mindex = Math.floor((first + last)/2);
                         if(randomNum < arr[mindex]) //大于中间值
                         {
                             last = mindex -1;
                         }else if(randomNum > arr[mindex]){
                             first = mindex +1;
                         }else{
                             console.timeEnd(1)
                              return arr[mindex];
                         }
                     }
                 }
                 console.log(show(arr,randomNum));
            </script>
        </body>
    </html>
  • 相关阅读:
    test
    flash链接需要后台调用时的插入flash方法
    js验证码倒计时
    设置Cookie
    用in判断input中的placeholder属性是否在这个对象里
    常用的正则表达式规则
    webApp添加到iOS桌面
    .substr()在字符串每个字母前面加上一个1
    PAT 甲级1001 A+B Format (20)(C++ -思路)
    PAT 1012 数字分类 (20)(代码+测试点)
  • 原文地址:https://www.cnblogs.com/h5monkey/p/6639994.html
Copyright © 2020-2023  润新知