当前位置:   article > 正文

js 实现算法二分查找_js二分法

js二分法

二分算法:概念简单易懂、就是把一组有序数组、每次一分为二的去查找。

举例:超市买了一堆东西、结完账警报器响了。东西太多、一个一个拿出来警报器过一遍、太浪费时间。保安大哥将你买的东西一分为二、哪边响了、说明哪边有东西没结账。重复两三次、基本就定位了你没结账的物品。

在lertCode刷了一道有关的题

  1. 使用二分算法实现
  2. 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1
  3. 来源:力扣(LeetCode)
  4. 链接:https://leetcode-cn.com/problems/binary-search

起初没明白题意的我直接一个for循环搞定、后来才知道、数据量太大时、这样太损耗性能了。

直接上代码

  1. var search = function (nums, target) {
  2. let low = 0,
  3. high = nums.length - 1; // 下标
  4. while (low <= high) {
  5. const mid = Math.floor((high - low) / 2) + low;
  6. const num = nums[mid];
  7. if (num === target) {
  8. return mid;
  9. } else if (num > target) {
  10. high = mid - 1;
  11. } else {
  12. low = mid + 1;
  13. }
  14. }
  15. return -1;
  16. };
  17. console.log("结果索引", search([1, 2, 3, 4, 5, 6, 7], 5));

起初我明白思路、但是没明白每个字段代表什么、大了断点看了两次才明白、low和high其实就是二分之后的下标范围、每一次根据传入的值判断是在左边还是右边、来决定范围的更改。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/563799
推荐阅读
相关标签
  

闽ICP备14008679号