当前位置: 首页 > news >正文

算法之二分查找法

需求描述:

        在有序数组A内,查找值target

        如果找到返回索引

        如果找不到返回-1

算法实现描述

        前提条件:给定一个含有n个元素的有序数组A,满足A0≤A1≤A2≤···An-1,一个待查值target

        实现步骤:        1、创建i = 0, j = n - 1;

                                   2、如果i > j,结果查找,没找到

                                   3、设置m = floor((i+j) / 2),m为中间索引,floor是向下取整(≤(i + j) / 2的最小整数)

                                   4、如果target < Am 设置 j = m - 1,跳到第二步

                                   5、如果Am < target 设置 i = m + 1, 跳到第二步

                                   6、如果Am = target,结束查找,找到了

代码实现

    /**** 二分查找法实现* @param args 数据* @param target 查找目标* @return 找到返回索引*         找不到返回-1*/public static int binarySearchBasic(int[] args, int target) {int i = 0, j = args.length - 1;//设置指针和初始值while (i <= j) {//范围内有东西int m = (i + j) / 2;if (target < args[m]) {//目标在左边j = m-1;} else if (args[m] < target){//目标在右边i = m + 1;} else {return m;//找到数据的id}}return -1;}


http://www.mrgr.cn/news/54005.html

相关文章:

  • RootNeighboursDataset(helpers.dataset_classes文件中的root_neighbours_dataset.py)
  • HarmonyOS NEXT 应用开发实战(六、组件导航Navigation使用详解)
  • FreeRTOS基于汇编语言理解堆的概念,栈的概念(函数调用,局部变量,FreeRTOS如何使用栈)
  • GRPC 压缩算法
  • 未来智慧城市发展的四大引领方向
  • U-Boot的移植流程
  • 计算机网络基本架构实例1
  • Spring篇(事务篇 - 基础介绍)
  • 【Java】Java 的反射机制(二):类的加载(拓展)
  • 从多线程到 epoll:如何优雅地处理高并发请求?
  • python 爬虫 入门 三、登录以及代理。
  • 练习题 - Scrapy爬虫框架 Items 数据项
  • Mysql安装与卸载
  • C++虚函数的默认参数是静态绑定还是动态绑定
  • CTFHUB技能树之XSS——DOM反射
  • 从零开始学PHP之helloworld
  • 练习题 - Scrapy爬虫框架 Spider Middleware 爬虫页中间件
  • scrapy案例——链家租房数据的爬取
  • 外部存储器与内部存储器有哪些主要区别
  • [项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp
  • 【Trick】在vscode上配置copilot时,输出端出现Invalid copilot token: missing token: 403
  • 摩擦转矩摩擦特性曲线测量(详细算法逻辑框图+SCL源代码)
  • 【Mysql】-锁,行级锁
  • 周末总结(2024/10/19)
  • 3.1.1 内核对用户空间的管理2,搜索目标地址所在的节点
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-10