73、搜索、排序与大O表示法

搜索、排序与大O表示法

1. 引言

在处理数据时,搜索和排序是两项基本操作。搜索是指确定一个值(搜索键)是否存在于数据中,如果存在则找出其位置。排序则是根据一个或多个排序键将数据按升序或降序排列。常见的搜索算法有线性搜索和二分搜索,排序算法有选择排序、插入排序和归并排序等。

下面是一些搜索和排序算法的总结表格:
|算法类型|算法名称|
| ---- | ---- |
|搜索算法|线性搜索、二分搜索、递归线性搜索、递归二分搜索等|
|排序算法|选择排序、插入排序、递归归并排序、冒泡排序、桶排序、递归快速排序等|

2. 线性搜索

线性搜索是一种简单但效率相对较低的搜索算法。它的基本思想是依次检查数组中的每个元素,直到找到匹配的搜索键或遍历完整个数组。

2.1 线性搜索算法步骤
  • 从数组的第一个元素开始,将其与搜索键进行比较。
  • 如果当前元素与搜索键匹配,则返回该元素的索引。
  • 如果不匹配,则继续检查下一个元素。
  • 重复上述步骤,直到找到匹配的元素或遍历完整个数组。
  • 如果遍历完整个数组都没有找到匹配的元素,则返回一个哨兵值(如 -1)。

例如,对于数组 [34, 56, 2, 10, 77, 51, 93, 30, 5, 52] ,如果要搜索 51,线性搜索会依次检查 34、56、2、10、77,直到找到 51 并返回其索引 5。

2.2 线性搜索的实现代码

        

相关推荐

Elasticsearch(十三) ElasticSearch搜索附近的人

需求: 通过指定点搜索附近的人 , 要求可以过滤年龄, 结果按照距离进行排序, 并且展示她/他距离你多远 本文参考: es官网文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/sorting-by-distance.html Spring官网文档:https://docs.spring.io/spring-data/elasticsearch/docs/4.0.3.RELEASE/reference/html/#new-f..

weixin_38399962的博客 2726

44、排序与搜索算法详解

本文详细介绍了常见的排序与搜索算法,包括归并排序、快速排序和线性搜索的原理、实现代码及性能分析。通过对比不同算法的时间复杂度和适用场景,帮助读者更好地理解和选择合适的算法来解决实际问题。

zeta9的博客 61

73、文本搜索分析与系统启动流程全解析

本文全面解析了文本搜索与分析的常用工具及其使用方法,涵盖了grep、cut、sort等命令的实用技巧,并深入介绍了系统启动流程,包括固件引导、引导加载程序(如GRUB2)、内核启动及启动故障排查方法。同时,对比了不同文本编辑工具和引导加载程序的特点,为高效文本处理和系统管理提供了实用指导。

lambda的博客 75

iOS自动化之打包-xcodebuild命令行打包.app并安装到ios模拟器

xcode xcodebuild xcrun ios模拟器 iOS UI自动化测试 ios自动打包安装到ios模拟器

z12347891的博客 5074

UE5导入MetaHuman虚拟头像后,连接live link face,面部表情捕捉出错修正

UE5 利用live link face 驱动meta human面部表情捕捉

m0_53122690的博客 6595

BugkuCTF-PWN题pwn2-overflow超详细讲解

解题思路 1)计算出get_shell_的地址偏移量 2)算出来之后就直接溢出到后门函数 知识点 x64函数调用规则 解题之前我们先学下linux x64的函数调用规则。 x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存的顺序是从右往左入栈。比如abcdef会存入到寄存器里,然后一次入栈h

am_03的博客 3013

Zephyr RTOS详解

Zephyr 是一个开源的实时操作系统(RTOS),专为资源受限的嵌入式设备设计,支持多种架构(如 ARM Cortex-M、RISC-V、x86 等)。

weixin_43484713的博客 4108

5分钟搞定!用FunASR在本地快速部署达摩院Paraformer语音识别模型(附常见问题解决)

本文详细介绍了如何在本地快速部署阿里达摩院开源的Paraformer语音识别模型。通过FunASR工具包,用户可在5分钟内完成环境配置、模型下载与基础识别,并掌握批量处理、性能调优及构建API服务等进阶技巧。文章重点解析了Paraformer的非自回归架构带来的速度优势,并提供了音频格式转换、依赖冲突、显存不足等常见问题的实战解决方案,助力开发者实现高效、离线的语音转写应用。

p1q2r的博客 705

SAPGUI excel 导出时遇到的运行时错误:STRING_SIZE_TOO_LARGE

当报表导出需求远超单一 XLSX 文件的物理承载力时,与其在 SAPGUI 中硬拼 2 GB 限制,不如把分页、过滤、流式写入作为设计前提。掌握 ABAP2XLSX 或 CSV + Power Query 等工具链,既能满足审计合规,又能让应用服务器远离的噩梦。祝你在下一次导出海量数据时,既高效又优雅。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 641

公交车调度排班优化算法研究与实现

本文提出的公交车调度排班优化算法基于遗传算法,能够较好地处理公交车调度排班问题,使得车辆数量和运营时间得到平衡,公交车的使用效率得到了优化。在模拟的公交车路线中,使用本文所提出的算法,得到了一组较优的公交车调度排班方案。其中,车辆数量的多少会影响到公交车的行驶速度和等候时间,而运营时间的长短则会直接影响到公交车的使用效率和成本。本文基于遗传算法,通过随机生成种群、选择、交叉、变异等操作,逐步优化种群中个体的适应度,最终得到较优的公交车调度排班方案。以下是本文中所使用的Matlab代码实现,供参考。

PixelLoom的博客 872

零基础速成simulink代码生成——stateflow基础3

此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

不断debug,优化中…… 1711

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 2、视觉纹理的表示与建模:从基础到应用
下一篇: 55、网络基础设施安全防护全解析
java5
博客等级 码龄22年 85粉丝 2103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值