JS二分查找算法详解

作者:青柠时间:2026-10-22 09:39:59浏览:162

本文详细介绍JavaScript中二分查找(折半查找)算法的原理与实现。该算法适用于有序数组,通过不断缩小搜索范围来定位目标元素。文中提供了非递归与递归两种JS实现方式,并解析了核心逻辑与边界处理,帮助开发者高效掌握这一基础搜索技术。

二分查找算法原理

二分查找,亦称折半查找,是一种专门针对有序数组设计的元素搜索算法。其核心查找流程包含以下几个关键步骤:

第一步,从有序数组的中间元素开始比对。若中间元素恰好等于目标值,则搜索成功并结束;否则进入下一步。第二步,根据目标值与中间元素的大小关系,确定搜索区间:若目标值大于中间元素,则在数组右半部分继续查找;若目标值小于中间元素,则在左半部分查找,并重复上述中间点比对操作。第三步,若搜索区间缩小至为空,则判定目标元素不存在于该数组中。

参考代码实现如下:

JavaScript代码实现


 // 非递归算法
  function binary_search(arr, key) {
   var low = 0,
    high = arr.length - 1;
   while(low <= high){
    var mid = parseInt((high + low) / 2);
    if(key == arr[mid]){
     return mid;
    }else if(key > arr[mid]){
     low = mid + 1;
    }else if(key < arr[mid]){
     high = mid -1;
    }else{
     return -1;
    }
   }
  };
  var arr = [1,2,3,4,5,6,7,8,9,10,11,23,44,86];
  var result = binary_search(arr,10);
  alert(result); // 9 返回目标元素的索引值  

 // 递归算法
  function binary_search(arr,low, high, key) {
   if (low > high){
    return -1;
   }
   var mid = parseInt((high + low) / 2);
   if(arr[mid] == key){
    return mid;
   }else if (arr[mid] > key){
    high = mid - 1;
    return binary_search(arr, low, high, key);
   }else if (arr[mid] < key){
    low = mid + 1;
    return binary_search(arr, low, high, key);
   }
  };
  var arr = [1,2,3,4,5,6,7,8,9,10,11,23,44,86];
  var result = binary_search(arr, 0, 13, 10);
  alert(result); // 9 返回目标元素的索引值 

以上即为二分查找算法的主要内容,希望能为读者的学习提供有益参考,欢迎持续关注本站获取更多技术分享。

作者最新文章