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

程序员必懂的四种查找效率:O(1)、O(log n)、O(n)、O(k)

同样是查东西为什么有人1秒有人要1小时今天想和大家聊一个所有程序员都绕不开但初学者往往一脸懵的概念——时间复杂度。别被这个名词吓到其实它就在我们身边。看完今天这篇文章你不仅能搞懂这些“天书”是什么意思还能在下次和同事聊天时淡定地来一句“你这个算法是 O(n) 的太慢了我帮你优化到 O(log n) 吧。”一、先搞懂O() 到底是什么想象你要在一个书架上找一本书。我们找书的具体方法比如一本本找或者先分类再找其实就是算法。而 O()就是用来评价这个算法效率高低的评分标准。这个评分标准看的不是“具体耗时几秒”而是随着书的数量变多你找书的时间会怎么变化。如果书架上只有10本书什么方法都快。但如果有10万本书有的方法还是很快有的方法就会慢到让你怀疑人生。O() 就是用来描述这种“抗压能力”的数学符号。下面我们用找东西的场景把这四种效率挨个讲明白。二、O(1) —— 效率之王“瞬间移动”O(1) 的意思是不管数据有多少我都能一步到位。生活场景假设公司有1000个工位每个工位上都贴着员工的名字。你想找张三。最高效的方法是什么公司发了一张工位地图地图上直接标着“张三 → 工位号 3-205”。你看一眼地图一步到位直接走到那个工位。计算机场景哈希查找在代码里有一种数据结构叫哈希表比如 JavaScript 里的对象、C# 里的字典。# 假设我们存了员工信息staff {张三: 工位 3-205,李四: 工位 2-101,# ... 还有998个人}# 找张三position staff[张三] # 瞬间拿到结果不管staff有多大这就是O(1)数据量从1000变成100万查找时间完全不变永远是瞬间。三、O(log n) —— 效率亚军“每次排除一半”O(log n) 的意思是每次操作都排除一半数据翻倍我也不怕。生活场景朋友说“我心里想了一个1到100之间的数字你来猜我告诉你‘大了’还是‘小了’。”普通人的笨办法是从1开始猜1小了。2小了。3小了……这是 O(n)。聪明人的办法是50大了。25小了。37小了。43大了。40对了每次猜完剩下的范围就减少一半。100个数最多猜7次1000个数最多猜10次100万个数最多猜20次。这就是 O(log n)。计算机场景二分查找在有序数组里找一个数用的就是这种方法。# 在有序数组里找66arr [2, 5, 8, 12, 19, 23, 34, 45, 56, 66, 78, 89]# 二分查找的过程# 1. 看中间的数 3466比34大只查右半边# 2. 看右半边的中间 66正好命中为什么叫 log nlog n 在数学里叫“对数”你可以简单理解为2的多少次方等于 n。2⁶ 64所以 log₂64 62⁷ 128所以 log₂128 7n 从64涨到128翻了一倍但查找次数只从6涨到7只加了1次。这就是 O(log n) 的可怕之处——数据越多优势越大。四、O(n) —— 老实人“一个一个来”O(n) 的意思是最坏情况下每个东西我都要看一遍。生活场景早上出门钥匙找不到了。你从床头柜开始翻翻书桌翻沙发翻厨房……一个地方一个地方地找。如果房间里有 n 个地方可能藏钥匙最坏的情况下你要把 n 个地方都翻一遍。这就是 O(n)。计算机场景顺序查找在无序数组里找一个数只能用这个方法。# 在乱序数组里找66arr [34, 78, 12, 56, 89, 2, 23, 66, 45, 5, 19, 8]for num in arr:if num 66:print(找到了)break运气好可能第一个就是运气不好可能最后一个才是最坏情况就是n 次。数据对比数据量O(log n) 次数O(n) 次数10071001万141万100万20100万当数据量到100万时O(log n) 只要20次O(n) 要100万次。5万倍的差距五、O(k) —— 我只找该找的O(k) 的意思是这事儿需要干多少活取决于“有多少个目标”而不是“总共有多少东西”。生活场景全班50个人你要收没交作业的那几个人。老师告诉你“就那5个没交”你直接去找那5个人。不管全班是50人还是500人只要没交作业的还是那5个你的工作量就不变。这里的 k 5没交作业的人数n 50全班人数但如果k值很大那么也会影响效率。六、从“查东西”看透算法效率快慢排名一般情况下O(1) O(log n) O(k) O(n)但注意O(k) 的位置不固定——如果 k 很小比如 k10它可能比 O(log n) 还快如果 k 很大比如 kn/2它可能接近 O(n)所以 O(k) 的“快慢”完全取决于k 本身有多大因此它的效率受K值大小而影响。七、看完这篇文章闭上眼睛回想一下O(1)是什么—— 看地图找工位一步到位O(log n)是什么—— 猜数字每次排除一半O(n)是什么—— 找钥匙每个地方翻一遍O(k)是什么—— 收作业只找没交的那几个八、下次写代码时记得问自己三个问题我到底要处理多少数据n 有多大我是不是真的需要处理全部能不能只处理 k 个有没有办法每次排除一半能不能变成 O(log n)想清楚这三件事你就已经超过一半的程序员了。

相关文章:

程序员必懂的四种查找效率:O(1)、O(log n)、O(n)、O(k)

同样是查东西,为什么有人1秒,有人要1小时? 今天想和大家聊一个所有程序员都绕不开,但初学者往往一脸懵的概念——时间复杂度。 别被这个名词吓到,其实它就在我们身边。 看完今天这篇文章,你不仅能搞懂这些…...

阿里Qwen-Image-Edit-2511开箱即用:内置热门LoRA,无需调参直接出图

阿里Qwen-Image-Edit-2511开箱即用:内置热门LoRA,无需调参直接出图 1. 模型介绍 Qwen-Image-Edit-2511是阿里最新推出的图像编辑模型,作为Qwen-Image-Edit-2509的升级版本,它在多个关键领域实现了显著提升。这个模型最大的亮点在…...

15瓦至1000瓦完整量产版开关电源方案:含图纸、BOM、变压器及磁芯图纸,可直接生产

15瓦到1000瓦完整量产版开关电源方案,有图纸,bom,变压器和各种磁芯图纸,可以直接生产最近在搞开关电源量产方案的朋友有福了,这套从15W到1000W全覆盖的设计方案绝对能让你少掉几根头发。先说重点:整套方案已…...

Retinaface+CurricularFace在SpringBoot项目中的集成应用

RetinafaceCurricularFace在SpringBoot项目中的集成应用 1. 引言:企业级人脸识别的实际需求 在现代企业应用中,人脸识别技术已经广泛应用于门禁系统、考勤管理、身份验证等场景。传统的单机版人脸识别方案往往难以满足企业级应用的高并发、高可用需求。…...

3步解决中文文献管理难题:Jasminum插件提升80%科研效率

3步解决中文文献管理难题:Jasminum插件提升80%科研效率 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在中文文献管理…...

StructBERT语义匹配工具实测:本地运行+GPU加速,中文复述识别效果惊艳

StructBERT语义匹配工具实测:本地运行GPU加速,中文复述识别效果惊艳 你有没有遇到过这样的场景?需要判断两段中文文字是不是在说同一件事,或者想在海量文本里找出那些意思相近但表述不同的句子?比如,审核用…...

RexUniNLU效果展示:同一段政府公告文本的11种NLP任务结构化输出

RexUniNLU效果展示:同一段政府公告文本的11种NLP任务结构化输出 1. 系统概览:一站式中文NLP分析利器 RexUniNLU是一个基于ModelScope DeBERTa Rex-UniNLU模型的全功能中文自然语言处理系统。这个系统的最大特点是能够用同一个模型处理十多种不同的NLP任…...

Navicat连接PostgreSQL报错authentication method 10的深度排查与解决方案

1. 遇到Navicat连接PostgreSQL报错authentication method 10怎么办? 最近在帮朋友排查一个数据库连接问题,他用Navicat Premium 12连接PostgreSQL 12时,遇到了"authentication method 10 not supported"的错误提示。这个错误看起来…...

eSIM安全验证全解析:从EID到证书链的信任构建

1. eSIM安全验证的核心:EID与证书链的信任基石 第一次接触eSIM安全体系时,我被那一串串数字证书和验证规则搞得头晕眼花。直到在某个物联网项目中踩了坑才明白,这套机制就像我们现实生活中的身份证公章组合——EID相当于设备身份证号&#xf…...

基于CW32L031与SY7200AABC的308nm紫外线治疗仪DIY全流程解析

基于CW32L031与SY7200AABC的308nm紫外线治疗仪DIY全流程解析 最近身边有朋友聊起,家里有亲人需要用到308nm紫外线进行光疗,但医院治疗费用不菲,市面上的治疗仪价格也让人望而却步。作为一名嵌入式开发者,我就在想,能不…...

罗技PUBG压枪宏技术指南:从弹道控制到参数优化的实战方案

罗技PUBG压枪宏技术指南:从弹道控制到参数优化的实战方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 绝地求生(PUBG&…...

新手必看:用Ollama运行Yi-Coder-1.5B,解决编程中的常见问题

新手必看:用Ollama运行Yi-Coder-1.5B,解决编程中的常见问题 1. 为什么你需要一个本地代码助手? 写代码时,你是不是经常遇到这些情况? 脑子里有思路,但敲键盘时却卡壳,不知道某个函数的具体写…...

水墨江南模型网络安全考量:保护您的AI绘画API接口与训练数据

水墨江南模型网络安全考量:保护您的AI绘画API接口与训练数据 最近在帮一个朋友部署水墨江南这个AI绘画模型,他打算做成一个公开的API服务,让外部用户也能调用。聊着聊着,我们就发现这事儿没那么简单。模型本身效果确实惊艳&#…...

Phi-3-vision-128k-instruct开源大模型实践:构建企业专属图文智能中枢

Phi-3-vision-128k-instruct开源大模型实践:构建企业专属图文智能中枢 1. 模型介绍与核心价值 Phi-3-Vision-128K-Instruct 是微软推出的轻量级开源多模态模型,属于Phi-3模型家族的最新成员。这个模型特别适合企业构建图文智能处理系统,它能…...

RexUniNLU零样本教程:Schema递归定义在复杂事件抽取中的应用示例

RexUniNLU零样本教程:Schema递归定义在复杂事件抽取中的应用示例 1. 快速了解RexUniNLU RexUniNLU是一个基于DeBERTa架构的统一自然语言理解模型,专门针对中文场景优化。这个模型最厉害的地方在于,它不需要任何训练数据就能完成各种NLP任务…...

惊艳写实人像生成:Stable-Diffusion-v1-5-archive光影与细节控制作品展

惊艳写实人像生成:Stable-Diffusion-v1-5-archive光影与细节控制作品展 最近在玩一个挺有意思的AI模型,叫Stable-Diffusion-v1-5-archive。你可能听说过Stable Diffusion,但这个版本有点特别,它在生成那种“以假乱真”的写实人像…...

造相-Z-Image完整指南:CPU卸载+VAE分片解码防OOM实战部署

造相-Z-Image完整指南:CPU卸载VAE分片解码防OOM实战部署 想在自己的电脑上跑一个高质量的文生图模型,但总被“爆显存”劝退?特别是用RTX 4090这种顶级显卡,跑大模型、生成高分辨率图片时,显存不足(OOM&…...

SEER‘S EYE模型知识库构建:基于MySQL的向量存储与检索

SEERS EYE模型知识库构建:基于MySQL的向量存储与检索 你有没有遇到过这样的情况?公司内部有海量的产品手册、技术文档和会议纪要,当你想快速找到一个问题的答案时,要么是记不清文件在哪,要么是关键词搜出来的结果驴唇…...

零基础部署DAMOYOLO-S:保姆级Ubuntu环境与Docker配置指南

零基础部署DAMOYOLO-S:保姆级Ubuntu环境与Docker配置指南 你是不是也对目标检测模型感兴趣,想亲手部署一个试试,但一看到Linux命令和Docker配置就头大?别担心,这篇文章就是为你准备的。咱们今天不谈复杂的算法原理&am…...

Hunyuan-OCR-WEBUI快速上手:上传图片即可识别的极简操作

Hunyuan-OCR-WEBUI快速上手:上传图片即可识别的极简操作 1. 引言:为什么选择Hunyuan-OCR-WEBUI? 在日常工作和生活中,我们经常会遇到需要从图片中提取文字的场景:可能是扫描的合同文档、手写的会议笔记、或是路边拍下…...

NOKOV度量动捕软件进阶指南:刚体与Markerset的实战配置技巧

1. 刚体与Markerset的核心概念解析 刚接触动作捕捉的朋友可能会被"刚体"和"Markerset"这两个专业术语搞得一头雾水。简单来说,刚体就像我们小时候玩的木头人玩具 - 无论你怎么移动它,它的形状都不会改变。在NOKOV动捕系统中&#xf…...

ThinkPHP5.0集成美团API实战:卡券核销与撤销功能全解析

1. 为什么需要集成美团卡券核销功能 最近几年本地生活服务类应用爆发式增长,很多商家都开始使用电子卡券来替代传统的纸质优惠券。作为开发者,我们经常需要在自己的系统中对接第三方平台的卡券功能。美团作为国内领先的生活服务平台,其卡券系…...

【气象编程】基于ERA5数据的涡度平流计算与可视化实战

1. 认识ERA5数据与涡度平流 第一次接触气象数据分析的朋友可能会好奇,ERA5到底是什么?简单来说,它是欧洲中期天气预报中心(ECMWF)提供的第五代全球大气再分析数据集,相当于一个记录了地球大气状态的超级数据…...

DHT11单总线温湿度传感器在CW32F030C8T6开发板上的移植与驱动详解

DHT11单总线温湿度传感器在CW32F030C8T6开发板上的移植与驱动详解 最近在做一个环境监测的小项目,需要用到温湿度传感器,DHT11这个老朋友自然就成了首选。它价格便宜、使用简单,一根线就能搞定通信,非常适合咱们嵌入式入门学习。这…...

通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI实战:Java开发者集成SpringBoot应用

通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI实战:Java开发者集成SpringBoot应用 最近和几个做Java后端的朋友聊天,发现大家有个共同的困惑:现在AI能力这么强,但好像都是Python的天下,我们Java应用怎么才能低成本、快速地用…...

OFA-VE一键部署教程:3分钟搭建赛博风格分析系统

OFA-VE一键部署教程:3分钟搭建赛博风格分析系统 1. 开篇:为什么选择OFA-VE? 如果你正在寻找一个既酷炫又实用的视觉分析工具,OFA-VE绝对值得一试。这个来自阿里巴巴达摩院的技术,能够智能分析图像和文本之间的逻辑关…...

从零开始:用Python还原AppleAccount签名算法(附完整代码)

从零开始:用Python逆向解析AppleAccount签名机制 在iOS生态系统中,AppleAccount的签名机制一直是开发者关注的焦点。无论是自动化测试还是第三方服务集成,理解这一签名过程都至关重要。本文将带您深入探索如何通过逆向工程技术,逐…...

为什么NTT负包裹卷积比普通卷积更适合密码学?深入解析其数学本质与应用优势

为什么NTT负包裹卷积比普通卷积更适合密码学?深入解析其数学本质与应用优势 在密码学领域,多项式环上的快速乘法运算是构建高效加密方案的核心技术。传统卷积运算虽然直观,但在处理环Z[x]/(xⁿ1)上的乘法时,会面临系数膨胀和计算效…...

‌统一身份认证:学工系统如何实现“一号通”的便捷体验‌

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...

好写作AI:博士论文创新点的AI辅助凝练与表达策略——从“做了什么”到“新在哪里”

对于博士生而言,学位论文最核心的挑战,往往不是“写了多少字”,而是“新在哪里”。创新点是博士论文的灵魂——它决定了外审专家的评价、答辩委员会的判断,甚至影响你未来学术生涯的起点。 然而,很多博士生的困境在于…...