查找算法——二分查找法

news2024/10/7 12:27:30

一、介绍

       首先需要将查找的数据排好序,再进行二分查找法来进行查找,二分查找是将数据范围不断分割为两份,不断比较中间值与待查找值的大小来确定其在哪个区间范围的一种方法。例如:在一组数据(1,4,5,6,7,9,13,15)中查找一个数据4的方式,如下:

二、代码实现:

using System.Collections.Generic;
using UnityEngine;

public class DichotomyLookUpArithmetic : MonoBehaviour
{
    List<int> data;

    [SerializeField]
    int dataLength = 100;

    int needData = 0;

    private void Start()
    {
        data = new List<int>(dataLength);
        InitData(dataLength);
        DichotomyLookUp(needData);
        DichotomyLookUp(needData + 1);
    }

    void InitData(int datalen)
    {
        int sum = 0;
        for (int i = 0; i < datalen; i++) 
        {
            sum += Random.Range(0,20);
            data.Add(i + sum);

            if (sum > 400 && needData == 0)
                needData = i + sum;
        }
    }

    int DichotomyLookUp(int v)
    {
        int low, mid, high;
        low = 0;
        high = data.Count - 1;

        if (v < data[low] || v > data[high])
        {
            Debug.LogError("要查找的值不在数据内");
            return -1;
        }

        while (low < high) 
        {
            mid = (low + high) / 2;

            //判断要查找的值与mid对应值的大小
            if (data[mid] < v)
            {
                //如果数据比中间的值大,则数据在mid与high之间
                low = mid + 1;
            }
            else if (data[mid] > v)
            {
                //如果数据比中间的值小,则数据在Low与mid之间
                high = mid - 1;
            }
            else
            {
                Debug.Log("已找到数据");
                return data[mid];
            }
        }

        Debug.LogError("没有符合的数据");
        return -1;
    }
}

参考书籍:

清华大学出版社-图书详情-《图解数据结构--使用C#》 (tsinghua.edu.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1076161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础Linux_14(基础IO_文件)缓冲区+文件系统inode等

目录 1. 缓冲区 1.1 缓冲区的存在 1.2 缓冲区的刷新策略 1.3 模拟C标准库中的文件操作 完整代码及验证&#xff1a; 1.4 重看缓冲区 1.5 stdout和stderr的区别 2. 文件系统 2.1 磁盘的物理结构CHS等 2.2 磁盘的抽象结构LBA等 2.3 文件管理inode等 2.4 对文件的操作…

Bytebase 2023 第三季度回顾

开工快乐&#xff01;2023 的第三个季度转眼过去了&#xff0c;一起来看看 Bytebase 过去几个月干得如何&#xff1f; &#x1f4f0; 公司动态 Bytebase 突破百万下载。和 GitLab 签署 Technology Partner 技术合作伙伴协议。中东 Shopify 使用 Bytebase 构建一站式数据库开发…

节能减排 | AIRIOT智慧工厂节能管理解决方案

工厂作为高能耗的生产型企业&#xff0c;降低能耗和提升资源利用率方面就显得很重要&#xff0c;对实施国家倡导的节能降耗、绿色发展有着很大程度上的必要性。然而&#xff0c;工厂能源管理从传统手段向智能化升级转型的过程中&#xff0c;企业也不可避免的面临一些痛点和挑战…

在线刷题答题小程序开发现成源码搭建 功能丰富 支持在线考试+刷题 源码开源可二开

在线考试和刷题成为了学习的一种趋势&#xff0c;越来越多的人开始通过在线平台进行自我学习和提升。为了满足这一需求&#xff0c;开发一款功能丰富、支持在线考试和刷题的答题小程序成为了热门的需求。分享一款在线刷题答题小程序源码&#xff0c;功能丰富&#xff0c;支持在…

分布式搜索系统的设计

介绍 如今&#xff0c;我们几乎在每个网站上都看到一个搜索栏。搜索栏使我们能够快速找到我们需要的内容。 让我们举个例子。想象一下&#xff0c;如果YouTube没有提供搜索栏&#xff0c;我们如何在数百万个视频中找到特定的视频&#xff0c;这些视频多年来都已上传到YouTube&a…

【git merge/rebase】详解合并代码、解决冲突

目录 1.概述 2.merge 3.rebase 4.merge和rabase的区别 5.解决冲突 1.概述 在实际开发中&#xff0c;一个项目往往是多个人一起协作的&#xff0c;头天下班前大家把代码交到远端仓库&#xff0c;第二天工作的第一件事情都是从服务器上拉最新的代码&#xff0c;保证代码版本…

【pytorch】模型的保存与加载|| Dataloader数据加载器

Pytorch模型保存与加载&#xff0c;并在加载的模型基础上继续训练 系统学习Pytorch笔记三&#xff1a;Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms) 一、只保存参数 1. 保存 一般地&#xff0c;采用一条语句即可保存参数&#xff1a; torch.save(model.s…

UI设计师岗位的基本职责八篇

UI设计师岗位的基本职责1 职责&#xff1a; 1. 负责公司互联网产品app、web、h5等的用户界面设计工作; 2. 负责运营活动相关的平面及视频设计支持; 3. 负责完成产品相关的界面、图标、动画等的图形界面设计&#xff0c;并参与制定、编写产品视觉设计规范文档; 4. 整理和分…

解决yolo无法指定显卡的问题,实测v5、v7、v8有效

方法1 基本上这个就能解决了&#xff01;&#xff01;&#xff01; 在train.py的最上方加上下面这两行&#xff0c;注意是最上面&#xff0c;其次指定的就是你要使用的显卡 import os os.environ[CUDA_VISIBLE_DEVICES]6方法2&#xff1a; **问题&#xff1a;**命令行参数指…

数字化营销系统有什么优势?免费数字化营销系统推荐

数字化营销系统的优势在于其多方面的性能。首先&#xff0c;它可以帮助企业降低成本&#xff0c;其次&#xff0c;数字化营销系统还能提高市场推广收益情况的跟踪能力。通过精准定位和智能推荐&#xff0c;企业可以将信息传递给更有可能转化为实际购买力的潜在客户。如蚓链数字…

java加密使用

加解密 概念算法分类对称加解密算法非对称加解密算法信息摘要算法 数字签名和消息验签数字签名过程消息验签过程数字签名分类 AES使用生成秘钥使用秘钥加解密 RSA使用生成公私钥加密、加签、验签、解密 SM2使用将公钥和私钥证书文件转化为字符串存储 概念 算法分类 对称加解密…

Qt编程-QTableView冻结行或冻结列或冻结局部单元格

前言 Qt编程-QTableView冻结行或冻结列或冻结局部单元格。如题&#xff0c;先看效果是不是你需要的。网上找到的代码片段要么不全要么不是想要的。如果你需要同时冻结行和列的效果&#xff0c;请看下篇博客 Qt编程-QTableView同时冻结行和列。 冻结列&#xff1a; 冻结行&a…

[stm32]外中断控制灯光

在STM32CubeMX中配置外部中断功能和参数 1、将上拉输入的引脚设置为&#xff1a;GPIO_EXTI功能 2、GPIO模式设为下降沿触发外部中断&#xff0c;使能上拉电阻&#xff0c;用户标签 3、要将NVIC的相关中断勾选 只有将中断源进行勾选&#xff0c;相关的中断请求才能得到内核的…

华为云云耀云服务器L实例评测|企业项目最佳实践之云服务器介绍(一)

华为云云耀云服务器L实例评测&#xff5c;企业项目最佳实践系列&#xff1a; 华为云云耀云服务器L实例评测&#xff5c;企业项目最佳实践之云服务器介绍(一) 华为云云耀云服务器L实例评测&#xff5c;企业项目最佳实践之华为云介绍(二) 华为云云耀云服务器L实例评测&#xff5…

Hudi第三章:集成Flink

系列文章目录 Hudi第一章&#xff1a;编译安装 Hudi第二章&#xff1a;集成Spark Hudi第二章&#xff1a;集成Spark(二) Hudi第三章&#xff1a;集成Flink 文章目录 系列文章目录前言一、环境准备1.上传并解压2.修改配置文件3.拷贝jar包4.启动sql-client1.启动hadoop2.启动ses…

2023年中国助消化药物行业现状分析:消化不良患者逐年上升,提升需求量[图]

助消化药物主要分为促胃动力药物、消化酶抑制剂、胃酸抑制药物和消食剂4种类型。促胃动力药物的作用机制是通过增强胃肠道平滑肌动力促进胃酸分泌&#xff0c;从而达到助消化的目的&#xff0c;临床常用药物包括多潘立酮、莫沙必利、西沙比利等。 助消化药物分类 资料来源&…

SI314兼容替代 GTX314L—低功耗14通道电容触摸传感器芯片 应用智能门锁

1.介绍 Si314是一款具有自动灵敏度校准功能的14通道电容传感器&#xff0c;其工作电压范围为1.8~5.5v.Si314设置休眠模式来节省功耗&#xff0c;此时&#xff0c;功耗电流为10uA3. 3V。 Si314各个感应通道可实现独立使能、校准、灵敏度调节&#xff0c;可以确保可靠性&#x…

一款好用的PDF文档解密软件

PDF Decrypter pro 纯免费&#xff0c;没有页数限制&#xff0c;没有额外水印&#xff0c;强烈推荐&#xff01;

使用docker创建redis实例、主从复制、哨兵集群

单机模式 1 拉取镜像 docker pull redis:7.2.1 2 新建redis映射配置文件夹data和conf $ mkdir -p /mydata/redis/data $ mkdir -p /mydata/redis/conf 3 切换到redis配置文件映射目录/mydata/redis/conf cd /mydata/redis/conf 4 编辑配置文件 vim redis.…

算法题:单调递增的数字(贪心算法解决序列问题)

这道题参考了一位网友的思路&#xff0c;采用了贪心算法动态规划&#xff0c;具体思路如下&#xff1a;&#xff08;完整题目附在了最后面&#xff09; 1、从高到低遍历数字的每个位数&#xff0c;找到第一个数值递减&#xff08;<&#xff09;的地方&#xff0c;把当前位-…