zoukankan      html  css  js  c++  java
  • JavaScript实现二分查找

    思路:找到数组中间数,和你要找的数进行比较,如果midVal>findVal则说明要查找的数在数组的左半部分,就把该数组二分,只从左边找(递归)


    var arr=[1,4,6,8,12,45];
    function binarySearch(arr,findVal,leftIndex,rightIndex){

      //防止无穷递归
      if(leftIndex>rightIndex){
        document.writeln("找不到");
        return;
      }

      //找到中间这个值
     // var midVal=arr[Math.floor((leftIndex+rightIndex)/2)];//用于下取整
     var midIndex=Math.floor((leftIndex+rightIndex)/2);
     var midVal=arr[midIndex];
      //比较
      if(midVal>findVal){
        //在左边找
        binarySearch(arr,findVal,leftIndex,midIndex-1);//递归查找
      }else if(midVal<findVal){
        //在右面找
        binarySearch(arr,findVal,midIndex+1,rightIndex);
      }else{
        document.writeln("找到下标为"+midIndex);
        return;
      }

    }

    //测试,调用函数
    binarySearch(arr,8,0,arr.length-1);

    宝剑锋从磨砺出,梅花香自苦寒来。
  • 相关阅读:
    Swift编码总结4
    Swift编码总结3
    无题
    WebSocket桌面客户端工具
    Dell U2913WM使用感受
    Oracle DB 12c first glance
    [翻译] Oracle Database 12c 新特性Multitenant
    一眨眼oracle 12c也有了
    .Net内存泄露原因及解决办法
    .NET 强引用和弱引用
  • 原文地址:https://www.cnblogs.com/haimengqingyuan/p/5424150.html
Copyright © 2011-2022 走看看