我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

  • 基础

  • 框架

  • 情商

  • 算法

    • 说说对二分查找的理解
      • 是什么
        • 思想
        • 条件
      • 怎么用
        • 算法复杂度O(logn)
      • 场景
    • 说说对动态规划、分而治之的理解
    • 说说对图的理解
    • 说说对堆的理解
    • 说说对归并排序的理解
    • 说说对快速排序的理解
    • 说说对插入排序的理解
    • 说说对数据结构的理解
    • 说说对栈、队列的理解及应用
    • 说说对树(二叉树)的理解
    • 说说对算法的理解及应用场景
    • 说说对贪心算法,回溯算法的理解
    • 说说对选择排序的理解
    • 说说有哪些排序算法及理解
    • 说说算法复杂度有哪些?
    • 说说对冒泡排序的理解
  • 网络

  • 千锤百炼
  • 算法
fangdown
2021-10-21
目录

说说对二分查找的理解

# 是什么

二分查找: 是一种在有序数组中查找某一特定元素的搜索算法

# 思想

  • 从数组的中间开始
  • 大于中间则去右边查找, 小于中间则去左边查找
  • 依次执行,直到最后

# 条件

  • 有序数组
  • 不适合太大或太小的数据

# 怎么用

function search(arr, target) {
  if (arr.length < 1) return -1;
  let lowIndex = 0;
  let highIndex = arr.length - 1;
  while (lowIndex <= highIndex) {
    const middleIndex = Math.floor((lowIndex + highIndex) / 2);
    if (target < arr[middleIndex]) {
      highIndex = middleIndex - 1;
    } else if (target > arr[middleIndex]) {
      lowIndex = middleIndex + 1;
    } else {
      return middleIndex;
    }
  }
  console.log(lowIndex, highIndex); // 3, 2
  return -1;
}

const arr = [1, 5, 10, 39, 99, 123];
const res = search(arr, 99);
console.log(res); // 4

# 算法复杂度O(logn)

# 场景

数据量适中的有序数组

#算法
上次更新: 2021/12/19, 18:05:42
低绩效的原因
说说对动态规划、分而治之的理解

← 低绩效的原因 说说对动态规划、分而治之的理解→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式