JavaScript实现二分查找实例代码

  

二分查找的前提为:数组,有序。逻辑为:优先和数组的中间元素比较,如果等于中间元素,则直接返回。如果不等于则取半继续查找。

     /* *   *二分查找,递归实现。   * @param目标   * @param加勒比海盗   * @param开始   * @param结束   * @returns {*}   */函数binarySearch(目标,加勒比海盗,开始,结束){   var开始=开始| | 0;   var=结束结束| | arr.length-1;   var=方法用于中期(开始+ (end-start)/2);   如果目标==arr(中期)){   返回中期;   }else if (target> arr(中期)){   返回binarySearch(中期目标,加勒比海盗,+ 1,);   其他}{   返回binarySearch(目标,加勒比海盗,开始,mid-1);   }   返回1;   }/* *   *有序的二分查找,返回1或存在的数组下标。不使用递归实现。   * @param目标   * @param加勒比海盗   * @returns {*}   */函数binarySearch(目标,arr) {   var=0开始;   var=arr.length-1结束;   而(start<=结束){   var=方法用于中期(开始+ (end-start)/2);   如果目标==arr(中期)){   返回中期;   }else if (target> arr(中期)){   中期开始=+ 1;   其他}{   结束=mid-1;   }   }   返回1;   }      

写完有序,自然而然的想到了无序的情况如何使用二分查找呢?马上想到先使用快排分组,分好组再二分。代码如下:

     /* *   *无序的二分查找。返回真/假   * @param目标   * @param加勒比海盗   * @returns{布尔}   */函数binarySearch(目标,arr) {   而(arr.length> 0) {//使用快速排序。以中期为中心划分大小,左边小,右边大。   var左=[];   var=[];//选择第一个元素作为基准元素(基准元素可以为任意一个元素)   var主=arr [0];//由于取了第一个元素,所以从第二个元素开始循环   (var i=1; i< arr.length;我+ +){   var项=arr[我];//大于基准的放右边,小于基准的放左边   item>主& # 63;right.push(项):left.push(项);   }//得到经过排序的新数组   如果目标==(主){   返回true;   }else if (target>主){   arr=;   其他}{   arr=左;   }   }   返回错误;   }      

写完用快速排序实现的无序二分查找,仔细想了一下该算法的时间复杂度,发现还不如直接一个的循环来得快

  

以上所述是小编给大家介绍的JavaScript实现二分查找实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

JavaScript实现二分查找实例代码