博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找(非递归/递归)js
阅读量:4128 次
发布时间:2019-05-25

本文共 1266 字,大约阅读时间需要 4 分钟。

二分查找(折半查找),是一种在有序数组中查找特定元素的搜索算法。

查找过程可以分为以下步骤:

(1)首先,从有序数组的中间的元素开始搜索,如果该元素正好是目标元素(即要查找的元素),则搜索过程结束,否则进行下一步。

(2)如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然后重复第一步的操作。
(3)如果某一步数组为空,则表示找不到目标元素。

非递归算法:

// 非递归算法function binary_search1(nums, target) {    var left = 0;    var right = nums.length-1;    while(left <= right) {        //var mid = left + parseInt((right - left) / 2);        var mid = Math.floor((left + right) / 2);        if(target == nums[mid]){            return mid;        }else if(target < nums[mid]){            right = mid - 1;        }else{            left = mid + 1;        }    }    return -1;}var arr = [1,2,3,4,5,6,7,8,9,10,11,23,44,86];var result = binary_search1(arr, 10);console.log(result); // 9 返回目标元素的索引值

递归算法:

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

 

转载地址:http://knuvi.baihongyu.com/

你可能感兴趣的文章
python 变量作用域问题(经典坑)
查看>>
pytorch
查看>>
pytorch(三)
查看>>
ubuntu相关
查看>>
C++ 调用json
查看>>
nano中设置脚本开机自启动
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>