美文网首页
js的二分法

js的二分法

作者: MuYs | 来源:发表于2021-05-11 10:05 被阅读0次

二分法,即在一个有序的数组里查找一个已知其值元素位置
实现方法有两种:

//循环二分法
function cycle_dichotomy(arr,value) {
  let lowIndex = 0,highIndex = arr.length - 1,midIndex;
  while(lowIndex <= highIndex) {
    midIndex = Math.floor((highIndex + lowIndex) / 2);
    if(arr[midIndex] == value) {
      return midIndex;
    }else if(arr[midIndex] > value) {
      highIndex = midIndex - 1;
    }else {
      lowIndex = midIndex + 1;
    }
  }
  return -1;
}


//递归二分法
function recursive_dichotomy(arr,value,lowIndex,highIndex) {
  if(lowIndex <= highIndex) {
    let midIndex = Math.floor((lowIndex + highIndex) / 2);
    if(arr[midIndex] == value) {
      return midIndex;
    }else if(arr[midIndex] > value) {
      return recursive_dichotomy(arr,value,lowIndex,midIndex - 1);
    }else {
      return recursive_dichotomy(arr,value,midIndex + 1,highIndex);
    }
  }
  return -1;
}

//eg:
let eg_arr = [1,2,3,4,5,6,7,8,9];
let eg_value = 3;
console.log(cycle_dichotomy(eg_arr,eg_value));  // 2
console.log(recursive_dichotomy(eg_arr,eg_value,0,8));  // 2

循环二分法效率更高,递归容易造成堆栈溢出

相关文章

  • js的二分法

    二分法,即在一个有序的数组里查找一个已知其值的元素位置实现方法有两种: 循环二分法效率更高,递归容易造成堆栈溢出

  • js二分法

    先玩一个小游戏。预先给定一个小于100的正整数x,让你猜,猜测过程中给予大小判断的提示,问你怎样快速地猜出来? 这...

  • 冒泡排序、选择排序和二分法查找

    冒泡排序 选择排序 二分法查找 概念 1.使用二分法好处: 可以加快寻找的效率。2.使用二分法特点: 二分法...

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 二分法查找

    二分法基本查找 二分法遍历查找

  • 手绘日常

    人物素描 今天重点讲二分法 二分法的重要性

  • JS二分法查找

  • 前端面试之算法二分法

    使用二分法的前提是,目标数组的元素必须是有序排列的,所以二分法属于有序查找算法 二分法又称为“折半查找”,从数组的...

  • 1.二分法查找(用js学算法)

    二分法查找的必要条件:数据必须是一个有序的列表概述:利用每次都先找到中间值然后排除一半数据的方法进行查找 js实现...

  • leetcode涉及的算法复杂度计算

    二分法算法复杂度lognhttps://www.zhihu.com/question/20503898 二分法的复...

网友评论

      本文标题:js的二分法

      本文链接:https://www.haomeiwen.com/subject/vytedltx.html