查找算法

TSMaster实战:手把手教你用C小程序发送自定义CAN报文(附完整代码) 本文详细解析了如何使用TSMaster的C小程序功能实现自定义CAN报文发送,涵盖环境配置、DBC集成、按键触发等实战技巧。通过完整代码示例和高级调试方法,帮助汽车电子工程师快速掌握TSMaster在CAN总线通信中的灵活应用,提升开发效率。 阅读详情

1.顺序查找算法

顾名思义就是按照数组下标顺序进行目标元素的查找。

//顺序查找
public void sequentialSearch(int[] array, int target){
    //顺序查找,顾名思义就是按数组的顺序来查找
    for (int i = 0; i < array.length; i++) {
        if (array[i] == target) {
            System.out.println("找到匹配的元素了,它的下标为:"+i);
            break;
        }
    }
}

2.递归方式的和非递归方式的二分查找

2.1条件
二分查找的首要条件就是要查找的数组是一个有序的数组,不然没法查找。
2.2递归方式的思路
(1)先要确定改数组的中间元素的下标
int middleIndex = (left+right)/2;
(2)然后让中间元素与查找元素进行比较
(3)如果array[middleIndex] == target,那么结束递归
(4)如果array[middleIndex] > target,那么向左递归
(5)如果array[middleIndex] < target,那么向右递归
(6)如果递归完整个数组没有找到目标元素,就结束递归,结束条件就是left>right
2.3递归方式的代码演示

/**
 * 二分查找
 * @param array 目标数组
 * @param left 左下标
 * @param right 右下标
 * @param target 查找目标
 */
public void dichotomySearch(int[] array, int left, int right, int target){
    if (left > right) {
        System.out.println("没有查找到匹配的元素");
        return;
    }
    int middleIndex = (left+right)/2;
    if (target == array[middleIndex]){
        System.out.println("找到匹配的元素了,它的下标为:"+middleIndex);
        return;
    }
    //向左递归
    if (target < array[middleIndex]) {
        dichotomySearch(array,left,middleIndex-1,target);
    }
    //向右递归
    dichotomySearch(array,middleIndex+1,right,target);
}

2.4非递归方式的思路
(1)得到数组的左下标和右下标,left = 0,right = array.length -1
(2) 得到数组的中间下标,middle = (left+right)/2
(3) 把下标为middle的元素与目标元素进行比较,如果array[middle] > target,就向左寻找,如果array[middle] < right,就向右寻找,否则就是找到了目标对象返回middle
(4)循环结束的条件就是left > right
2.5非递归方式的代码演示

/**
 * 二分查找,非递归
 * @param array 升序的目标数组
 * @param target 查找对象
 * @return 对象所在数组中的下标
 */
public static  int binarySearch(int[] array, int target){
    int left = 0;
    int right = array.length -1 ;
    while (left <= right) {
        int middle = (left+right)/2;
        //向左寻找
        if (array[middle] > target) {
            right = middle - 1;
            continue;
        }
        //向右寻找
        if (array[middle] < target) {
            left = middle + 1 ;
            continue;
        }
        return middle;
    }
    return -1;
}

3.插值查找算法

3.1插值查找算法基本介绍
(1)插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。
(2)自适应mid怎么得到呢?这里就要引入插值表达式了。
在这里插入图片描述
low表示左边的索引left,high表示右边的索引right,key就是要找的目标元素target
(3)对于数据量较大,关键字分布比较均匀的查找表来说,采用插值查找,速度较快。
(4)关键字分布不均匀的情况下,该方法不一定比二分查找要好。
3.2代码演示

/**
 * 插值查找算法
 * @param array 目标数组
 * @param left 左下标
 * @param right 右下标
 * @param target 查找目标
 */
public void interpolationSearch(int[] array, int left, int right, int target) {
    /*
     * target < array[0] || target > array[array.length-1]这两个条件是必须的,
     * 不然会报会报空指针异常,例如,array = {1,2,3},target=4插值表达式为
     * int middleIndex = left+(right-left)*(target-array[left])/(array[right]-array[left])
     * 得到middleIndex = 3,而这个数组的最大下标为2,所以会报空指针
     */
    if (left > right || target < array[0] || target > array[array.length-1]) {
        System.out.println("没有查找到匹配的元素");
        return;
    }
    int middleIndex = left+(right-left)*(target-array[left])/(array[right]-array[left]);
    if (target == array[middleIndex]){
        System.out.println("找到匹配的元素了,它的下标为:"+middleIndex);
        return;
    }
    //向左递归
    if (target < array[middleIndex]) {
        dichotomySearch(array,left,middleIndex-1,target);
    }
    //向右递归
    dichotomySearch(array,middleIndex+1,right,target);
}
【架构】-- StarRocks 和 Doris 介绍与选型建议 查询性能 | ✅ 高性能,支持向量化执行和 CBO 优化器 | ✅ 高性能,优化的查询引擎 |- **实时性要求高**:如果业务对数据的实时性要求较高,建议选择 **StarRocks**,其在实时数据处理和低延迟查询方面表现优越。- **复杂查询需求**:对于需要处理复杂多表关联查询的场景,两者均可胜任,需根据具体性能测试结果进行选择。 阅读详情

相关推荐

从CLIP到AnomalyCLIP:零样本异常检测的跨领域进化之路

本文探讨了从CLIP到AnomalyCLIP的技术演进,重点介绍了零样本异常检测在跨领域应用中的突破。AnomalyCLIP通过对象无关提示学习和多尺度特征提取,显著提升了工业质检、医疗影像等领域的检测精度,实现了高达96.4%的金属螺母划痕检测精度和85.7%的皮肤癌敏感度。这一技术为多模态模型在异常检测中的应用开辟了新路径。

r2s3t4的博客 111

几种搜索引擎算法 SEO

(一)1.引言   万维网WWW(World Wide Web)是一个巨大的,分布全球的信息服务中心,正在以飞快的速度扩展。1998年WWW上拥有约3.5亿个文档[14],每天增加约1百万的文档[6],不到9个月的时间文档总数就会翻一番[14]。WEB上的文档和传统的文档比较,有很多新的特点,它们是分布的,异构的,无结构或者半结构的,这就对传统信息检索技术提出了新的挑战。   传统的WEB搜索引擎...

JackLiu16的博客 1万+

通达信强龙趋势幅图指标 - 精准捕捉趋势,把握强势行情,多角度分析个股,强弱一目了然

STICKLINE(趋势>0 AND SJTJ,4.8,5.8,1.5,0),COLORYELLOW;STICKLINE(资金>0 AND SJTJ,1.2,2.2,1.5,0),COLOR0080FF;STICKLINE(异动>0 AND SJTJ,0,1,1.5,0),COLORFF0080;STICKLINE(异动=0 AND SJTJ,0,1,1.5,1),COLORGRAY;

Q1809330692的博客 5643

[Data Structure & Algorithm] 七大查找算法

  查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查找和哈希查找会在后续的博文中进行详细介绍。   查找定义:根据给定的某个值,在查找表中确定一个其关键字...

weixin_34128839的博客 3505

手把手教你用THS4551搭建全差分放大器电路(附ADC驱动实战)

本文详细介绍了如何使用TI的THS4551全差分放大器搭建高性能ADC驱动电路,涵盖芯片选型、电路配置、PCB布局及实战调试等关键环节。THS4551凭借其优异的共模抑制比和宽电源电压范围,成为驱动16位及以上精度ADC的理想选择,特别适合工业应用场景。

weixin_30338481的博客 282

Anaconda+清华源加速PyTorch GPU环境安装与CUDA版本匹配指南

深度学习环境管理常面临依赖冲突与下载缓慢问题,通过虚拟环境隔离与镜像源加速可显著提升效率。Anaconda利用conda机制创建独立Python环境,避免包版本冲突;清华源通过国内镜像同步大幅提高下载速度。GPU版PyTorch安装需严格匹配CUDA、cuDNN与显卡驱动版本,否则易出现CUDA不可用错误。该方案适用于图像分割、目标检测等需多版本PyTorch并存的场景,能快速搭建稳定GPU训练环境。本文详解Anaconda安装、清华源配置及PyTorch GPU版安装全流程。

weixin_30522983的博客 237

【六】、查找算法

一、线性查找算法 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。 代码实现: public class SeqSearch { public static void main(String[] args) { int arr[] = {1, 9, 11, -1, 34, 89};// 没有顺序的数组 int index = seqSearch(arr, -

weixin_41449756的博客 678

ESP32与BH1750光照传感器结合使用的Web服务器案例

请注意,为了使代码正常工作,你需要将代码中的"你的WiFi网络名称"和"你的WiFi网络密码"替换为你自己的WiFi网络凭据。在代码中,我们首先导入了所需的库文件,包括Wire库用于I2C通信,BH1750库用于与光照传感器通信,WiFi库和WebServer库用于创建Web服务器。接下来,我们将编写一个Arduino代码来控制ESP32与BH1750的通信,并将读取到的光照强度值显示在Web服务器上。函数用于处理根路径的请求,其中我们读取光照传感器的值,并将其显示在返回的HTML页面中。

server_api196的博客 618

机器学习:常用优化算法(总结)——寻找目标函数的最优解

机器学习中常用优化算法总结

weixin_74268817的博客 3322

【异常】OpenClaw对接钉钉/飞书配对成功但无响应 全流程排查指南(适配阿里轻量服务器+OpenClaw)

下面按「先快速定位根因→通用核心排查→平台专属排查→兜底方案」的顺序,一步步解决,新手也能跟着操作。

奶爸的编程之路,也就一周冷个三天 699

vue接入海康4G版摄像头通过萤石云平台推送视频流教程

vue-video-player接入海康视频,videojs-contrib-hls,vue播放视频

renkai721的专栏 7280

几个目标跟踪算法

目标跟踪算法是一种计算机视觉技术,用于在视频或图像序列中检测并跟踪移动的目标,如人、车辆或物体。这些算法利用图像处理和机器学习技术,通过分析连续帧之间的变化,识别并跟踪目标的位置、轨迹和其他属性。这些算法在监控、自动驾驶、增强现实等领域有广泛应用。常见的目标跟踪算法包括卡尔曼滤波器、粒子滤波器、相关滤波器以及基于深度学习的算法,如卷积神经网络(CNN)和循环神经网络(RNN)。

7061

UFS总体介绍及FPGA开发

通过实现UFS的主控制器、设备控制器等组件,我们可以在FPGA上进行UFS开发,并实现高速数据传输和低功耗特性的存储解决方案。物理层负责传输物理信号,数据链路层提供数据包的传输和错误检测功能,传输层处理数据包的分段、重组和重传,逻辑层管理设备和主控制器之间的命令和数据传输,文件系统层负责文件管理和数据存储。在本文中,我们将介绍UFS的总体架构和特性,并探讨如何在FPGA上进行UFS开发。这些组件的实现涉及到UFS协议的具体细节和硬件平台的特性,因此需要参考UFS协议规范和FPGA开发平台的相关文档。

PodProgram的博客 2137

七大查找算法

参考博文:https://blog.youkuaiyun.com/weixin_39241397/article/details/79344179 1. 顺序查找 2. 二分查找 3. 插值查找 4. 斐波那契查找 5. 树表查找 6. 分块查找 7. 哈希查找 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介...

yimixgg的博客 5万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

查找算法-4种常用的查找算法

文章目录一、排序算法是什么?1.算法解读2.查找算法简介二、查找算法介绍及实现1.顺序查找算法描述代码实现:2.二分查找/折半查找算法描述代码实现:3.插值查找算法描述代码实现:4.斐波那契查找算法描述代码实现: 一、排序算法是什么? 1.算法解读 这里引入百度百科的解释: 谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。

GGB__的博客 5515

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

七种查找算法

查找1. 顺序查找2. 二分查找3. 插值查找4. 斐波那契查找5. 树表查找5.1 最简单的树表查找算法——二叉树查找算法。5.2 平衡查找树之2-3查找树(2-3 Tree)5.3 平衡查找树之红黑树(Red-Black Tree)5.4 B树和B+树(B Tree/B+ Tree)6. 分块查找7. 哈希查找 本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查找和哈希查找

将~军的博客 4296

【算法分析】查找算法:二分查找、顺序查找

08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.youkuaiyun.com/xiaowei_cqu/article/details/7747205 查找算法 查找算法是在存在的序列(list) 中查找特定的目标(target),要求序列中每个记录必须与一个关键词(key)关联才能进行查找。

小魏的修行路 4万+

『算法』哨兵查找算法

哨兵查找算法。

叄拾叄画生 5104

顺序查找算法

顺序查找算法 顺序查找算法又称顺序搜索算法或者线性搜索算法,是所有查找算法中最基本、最简单的,对应的时间复杂度为O(n)。 顺序查找算法适用于绝大多数场景,既可以在有序序列中查找目标元素,也可以在无序序列中查找目标元素。 顺序查找算法的实现思路 所谓顺序查找,指的是从待查找序列中的第一个元素开始,查看各个元素是否为要找的目标元素。 举个简单的例子,采用顺序查找算法在 {10,14,19,26,27,31,33,35,42,44} 序列中查找 33,整个查找过程如下图所示: 图 1 顺序查找 33 的过程

ccc369639963的博客 1万+

【算法基础】查找算法

目录 2.1查找算法简介 2.1.1算法简介 2.1.2衡量指标 2.1.3算法分类 2.2顺序查找 2.2.1算法思想 2.2.2代码实现 2.2.2复杂度分析 2.3二分查找 2.3.1算法思想 2.3.2代码实现 2.4插值查找 2.4.1算法描述 2.4.2代码实现 2.4.3性能评估 2.5斐波那契查找 2.5.1算法描述 2.5.2算法实现 ...

gecko 1049

C++ 查找算法

查找算法是计算机科学中用于在数据集合中定位特定元素的基本操作。以下是C++中常见查找算法的全面介绍。

1410

java查找算法

在java中,常用的查找有四种:1) 顺序(线性)查找2) 二分(折半)查找3) 插值查找4) 斐波那契查找

Good_Starry的博客 1459

【查找】四种查找算法

顺序查找 顺序查找(Sequential Search)又叫线性查找,是最简单直接暴力的查找方法。就是从头至尾挨个寻找,找到位置。当遍历完没找到就说明要找的数据不存在。它不要求数据有序。该算法的时间复杂度为O(n)。 public static int seqSearch(int[] arr, int value) { for(int index = 0; index < arr.length; index++) { if(arr[index] == value) {

风继续吹 923

查找算法—顺序查找、二分查找、插值查找、斐波那契查找算法的详解以及Java代码的实现

详细介绍了常见的4种查找算法,比如顺序查找/线性查找、二分查找/折半查找、插值查找、斐波那契查找等,并且提供了相应的Java代码实现。

终生学习践行者 3066

常用算法——查找算法

本篇介绍查找算法,查找指在一些数据元素中,通过一定的方法找出与给定关键字相同数据的元素的过程称为查找。实现查找的方法称查找算法。常用查找算法大致可分为七大查找算法:顺序查找、二分查找、插值查找、Fibonacci查找、分块查找、树表查找和HashTable查找。本篇详细介绍其中的顺序查找、二分查找、插值查找、Fibonacci(斐波那契)查找四种查找算法。

hz_zhangrl的博客 3486
上一篇: 基数排序
下一篇: 二叉树遍历、查找和删除说明
suixinghero
博客等级 码龄7年 10粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值