用js实现二分查找法

2023-10-29

二分查找法

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

function binarySearch(arr, target){

    let start = 0;
    let end = arr.length - 1;
    if(!end){
		return arr[0] === target ? 0 : -1;		
	}
    if(end == 1){
        return arr[0] === target ? 0 : arr[1] === target ? 1 : -1; 
    }
    let middle;
    while(start <= end){
        middle = (start + end) / 2 | 0; // 向下取整
        if(arr[middle] === target){
            return middle
        }else if(target > arr[middle]){
            start = middle + 1
        }else{
            end = middle - 1
        }
    }
    return -1
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用js实现二分查找法 的相关文章

  • 面试算法题:O(nlogn)查询l~r区间内k的个数

    查询用户文章喜好 我们对用户按照它们的注册时间先后来标号 对于一类文章 每个用户都有不同的喜好值 我们会想知道某一段时间内注册的用户 标号相连的一批用户 中 有多少用户对这类文章喜好值为k 因为一些特殊的原因 不会出现一个查询的用户区间完全
  • 普通遍历查找和二分法查找的两种实现(循环、递归)

    以下代码使用java语言编写 但是思想各语言通用 普通遍历查找 普通遍历查找 public static int search int arr int target for int i 0 i lt arr length i if arr
  • PAT 5 分小组(字符串与字符转换)

    分小组 java 9名运动员参加比赛 需要分3组进行预赛 有哪些分组的方案呢 我们标记运动员为 A B C I下面的程序列出了所有的分组方法 该程序的正常输出为 ABC DEF GHI ABC DEG FHI ABC DEH FGI ABC
  • 二分法查找之应用

    待定 1 二分法查找的前提 有序 1 二分法查找元素 例题1 287 寻找重复数 给定一个包含 n 1 个整数的数组 nums 其数字都在 1 到 n 之间 包括 1 和 n 可知至少存在一个重复的整数 假设只有一个重复的整数 找出这个重复
  • 最大二叉树(分治)

    给定一个不含重复元素的整数数组 以此数组直接递归构建的最大二叉树 最大二叉树定义如下 二叉树的根是数组中的最大元素 左子树是通过数组中最大值左边部分递归构造出的最大二叉树 右子树是通过数组中最大值右边部分递归构造出的最大二叉树 返回有给定数
  • 使用选择排序和二分法对传入的数组进行排序和查找

    选择排序和二分法 使用二分法查找数组中某个值得位置是要在数组提前排好序的前提下才能使用 所以要将数组进行排序 数组排序有冒泡排序 选择排序 插入排序等 今天我们使用选择排序对数组进行排序 测试类代码如下图 运行结果如下图 位置为i 1 所以
  • G--爬山---2023河南萌新联赛第(二)场:河南工业大学

    链接 登录 专业IT笔试面试备考平台 牛客网 来源 牛客网 示例1 输入 3 230 100 200 300 输出 192 示例2 输入 3 900 150 150 125 输出 1 解析 二分 include
  • 【排序算法】快速排序的分析改进

    基本的快速排序 最基本的快速排序是由C A R Hoare在1960年提出的 快速排序的算法是一种分治排序算法 它将数组划分为两个部分 然后分别对两个部分进行排序 快速每次对数组重新排序 选择一个基准值key 然后让数组满足下面的两个个条件
  • VJ 4 Traveling

    C Traveling Time limit 2sec Memory limit 256MB Score 300 points Problem Statement AtCoDeer the deer is going on a trip i
  • 十种常用机器学习算法入门

    弱人工智能近几年取得了重大突破 悄然间 已经成为每个人生活中必不可少的一部分 以我们的智能手机为例 看看到底温藏着多少人工智能的神奇魔术 下图是一部典型的智能手机上安装的一些常见应用程序 可能很多人都猜不到 人工智能技术已经是手机上很多应用
  • 蓝桥杯-刷题统计

    问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛 他计划周一至周五每天 做 aa 道题目 周六和周日每天做 bb 道题目 请你帮小明计算 按照计划他将在 第几天实现做题数大于等于 nn 题 输入格式 输入一行包含三个整数 a ba b
  • 二分查找的各种应用详解(C++)

    基本概念 Binary Search 二分查找也称折半查找 它是一种效率较高的查找方法 使用二分查找要求线性表必须采用顺序存储结构 而且表中元素按关键字有序排列 基本原理 查找 因为序列已经单调且有序排列 从中间位置开始比较 一次可以排除一
  • 2017第八届Java A组蓝桥杯省赛真题第九题:分巧克力

    第九题 分巧克力 儿童节那天有K位小朋友到小明家做客 小明拿出了珍藏的巧克力招待小朋友们 小明一共有N块巧克力 其中第i块是Hi x Wi的方格组成的长方形 为了公平起见 小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们 切出的巧克力
  • 蓝桥杯-纸张尺寸

    问题描述 在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm times 841mm 将 A0 纸 沿长边对折后为 A1 纸 大小为 841mm times 594mm 在对折的过程中长度直接取 下整 实际裁剪时可能有损耗 将
  • ​LeetCode刷题实战33:搜索旋转排序数组

    来源 https www cnblogs com techflow p 12441002 html 算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家
  • 二分查找及二分答案

    一 二分思想 二分是一种常用且非常精妙的算法 常常是我们解答问题的突破口 二分的基本用途是在单调序列或单调函数中做查找操作 因此当问题的答案具有单调性时 就可以通过二分把求解转化为判定 根据复杂度理论 可知判定的难度小于求解 这使得二分的应
  • 多种排序算法(插入、二分法【查找、排序】、选择、冒泡、快速、希尔)

    多种排序算法 插入 二分法 查找 排序 选择 冒泡 快速 希尔 插入排序 function insertSort arr var len arr length for var i 1 i lt len i var key arr i var
  • 剑指Offer 53-Ⅱ.0~n-1中缺失的数字

    LeetCode 剑指Offer 53 o n 1中缺失的数字 一个长度为n 1的递增排序数组中的所有数字都是唯一的 并且每个数字都在范围0 n 1之内 在范围0 n 1内的n个数字中有且只有一个数字不在该数组中 请找出这个数字 示例 1
  • 算法基础--蒙特卡洛模拟

    蒙特 卡罗方法 Monte Carlo method 也称统计模拟方法 是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明 而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法 是指使用随机数 或更常见的伪随机数 来解决很
  • C语言二分法查找算法

    二分查找算法 折半查找算法

随机推荐

  • 【Blog 5】软件构造落幕,计算人生启程

    经历了7周的学习 软件构造课落下帷幕 但我知道 这对我而言 才只是一个开始 最后几章介绍面向可复用性 可维护性 正确性与健壮性的软件构造的技术 过程等等 看似是不同的角度 其实内部联系密切 尤其是关于继承 委托 SOLID原则等有关知识 都
  • FindObjectsOfType返回场景中所有该类型的组件集合

    做一个简单的demo 场景中准备七个空物体 层级关系如下 查找场景中所有出现的gggg组件 然后把test这个类挂在MainCamera这个物体上 然后运行场景 控制台打印结果为 3 总结 FindObjectsOfType返回场景中所有改
  • 测试产品说明书

    本篇文档是来自csdn 我觉得比较好 于是就收录了 尽管测试产品说明书不是所以软测人员都有机会去做 但还是值得一谈的 如果有幸在项目早期介入软件开发 并有一定的话语权的话 就相当有用了 在软件开发初始阶段发现软件缺陷将可能为项目节省大笔的开
  • 数据结构:队列Queue详解

    文章目录 一 队列的概念和特点 二 队列的使用 三 队列的简单实现 四 循环队列 一 队列的概念和特点 队列 只允许在一端进行插入数据操作 在另一端进行删除数据操作的特殊线性表 进行插入操作的一端称为队尾 删除操作的一端称队头 入队列 进行
  • 管理系统的设计与实现方法总结

    项目总结 1 项目开发背景 目前 国内外毕业论文选题一般采用两种方式 一种将毕业设计存在软盘上交 另一种则存放到教师的电脑上的一个共享目录内 但这两种方法都有各自的弊端 前一种方法不方便携带 速度慢 容量小 易损坏 后一种方法虽然解决了软盘
  • 关于互联网思维与技术团队的一些总结

    2017 7 4更 真正在底层工作的人员 跟站在高层的人看到的东西都是两个东西 真正的从底层走到高层才能看的更精准 同样的 从底层走到高层的人 也没有一直处在高层的远见与见识 我信奉公司处于什么阶段用什么样的人 没必要一开始就弄高精尖的人和
  • 基于Docker的Hadoop集群搭建

    基于Docker的Hadoop集群搭建 本文为在阿里云服务器上基于docker的Hadoop集群搭建 安装思路为 安装docker gt 运行docker导入ubuntu镜像 gt 运行ubuntu系统 gt 在系统中配置好单个节点 gt
  • FreeMarker整合Spring 3

    开发环境 System Windows WebBrowser IE6 Firefox3 JavaEE Server tomcat5 0 2 8 tomcat6 IDE eclipse MyEclipse 8 开发依赖库 JavaEE5 Sp
  • [QT编程系列-9]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自动布局

    目录 3 QT窗体设计 3 7 自动布局 3 7 1 自动布局 3 7 2 在主窗口中自动布局 3 7 3 在自动布局容器中自动布局 3 7 4 在widget中自动布局 3 7 5 自动布局工件 3 QT窗体设计 3 7 自动布局 3 7
  • 基于单片机火灾报警器仿真设计

    一 系统方案 1 本设计采用51单片机作为主控器 2 DS18B20采集温度值送到液晶1602显示 3 MQ2采集烟雾值 送到液晶1602显示 4 按键设置温度报警值 大于报警值 声光报警 二 硬件设计 原理图如下 三 单片机软件设计 1
  • qt ×掉子窗口后,进程还没有停止的问题

    掉子窗口后 子窗口还在接受数据的问题 当子窗口显示时 先关闭父窗口 调用的先后顺序为 当子窗口显示时 先关闭子窗口 调用的先后顺序为 找到原因 此时子窗口的析构函数没有执行 解决方案 先说解决方案 给子窗口设置以下属性 setAttribu
  • UE4 去掉自动曝光(光线自适应)

    UE4在没有PostprocessingVolumn时 会在场景中加入自动曝光 有时会导致过亮或者过暗 解决方法 关闭ProjectSetting Rendering DefaultSetting中的AutoExposure 自动曝光 在场
  • CentOS安装错误:no default or ui configuration

    靠 以后再也不用浏览器自带的下载工具下载镜像文件了 原来是下载的不完整 但是显示完全下载完毕了 真特么误导人 文件的checksum不对 references https www centos org forums viewtopic ph
  • c++11 pod类型(了解)

    c 11 pod类型 了解 啥是POD类型 POD全称Plain Old Data 通俗的讲 一个类或结构体通过二进制拷贝后还能保持其数据不变 那么它就是一个POD类型 平凡的定义 1 有平凡的构造函数 2 有平凡的拷贝构造函数 3 有平凡
  • ReactHook EffectHook

    副作用操作 使得函数组件能够进行生命周期的操作 可以有多个 类组件中相同的生命周期会进行覆盖 会在 可以看作是以下生命周期函数的结合 componentDidMount componentDidUpdate 和 componentWillU
  • MR应用开发 —— Hadoop权威指南10

    1 Configuration Hadoop的配置API 之前 在获取Hadoop文件实例时 经常会创建一个Configuration实例 Configuration是Hadoop用于配置的API 是property和value的集合 ad
  • centos系统elasticseach安装

    Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎 一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎 当然 Elasticsearch 并不仅仅是 Lucene 那么简单 它不仅包括了全文搜索功能 还可以
  • Python堆积条形图、双轴图、多子图、圆圈热力图示例

    准备工作 使用Python绘图首先需要导入需要的库 并确保中文和负号的正常显示 import os import xlrd import pandas as pd import numpy as np import matplotlib p
  • 了解在Linux系统下不同Shell介绍以及切换

    了解在Linux系统下不同Shell介绍以及切换 引言 在Linux系统中 Shell是用户与操作系统内核之间的接口 它是一个命令行解释器 用于执行用户输入的命令并与操作系统进行交互 在Linux中 常见的Shell包括zsh bash f
  • 用js实现二分查找法

    二分查找法 二分查找也称折半查找 Binary Search 它是一种效率较高的查找方法 但是 折半查找要求线性表必须采用顺序存储结构 而且表中元素按关键字有序排列 function binarySearch arr target let