算法基础详解

news2024/10/6 14:25:41

大O记法

为了统一描述,大O不关注算法所用的时间,只关注其所用的步数。

比如数组不论多大,读取都只需1步。用大O记法来表示,就是:O(1)很多人将其读作“大O1”,也有些人读成“1数量级”。一般读成“O1”。虽然大O记法有很多种读法,但写法只有一种。O(1)意味着一种算法无论面对多大的数据量,其步数总是相同的。就像无论数组有多大,读取元素都只要1步。这1步在旧机器上也许要花20分钟,而用现代的硬件却只要1纳秒。但这两种情况下,读取数组都是1步。其他也属于O(1)的操作还包括数组末尾的插入与删除。无论数组有多大,这两种操作都只需1步,所以它们的效率都是O(1)。

下面研究一下大 O 记法如何描述线性查找的效率。线性查找在数组上要逐个检查每个格子。在最坏情况下,线性查找所需的步数等于格子数。即如前所述:对于N个元素的数组,线性查找需要花N步。用大O记法来表示,即为:O(N)将其读作“O N”。若用大O记法来描述一种处理一个N元素的数组需花N步的算法的效率,很简单,就是O(N)。

常数时间与线性时间

从 O(N)可以看出,大 O记法不只是用固定的数字(如22、440)来表示算法的步数,而是基于要处理的数据量来描述算法所需的步数。或者说,大O解答的是这样的问题:当数据增长时,步数如何变化?O(N)算法所需的步数等于数据量,意思是当数组增加一个元素时,O(N)算法就要增加1步。而O(1)算法无论面对多大的数组,其步数都不变。

下图展示了这两种时间复杂度。

从图中可以看出,O(N)呈现为一条对角线。当数据增加一个单位时,算法也随之增加一步。也就是说,数据越多,算法所需的步数就越多。O(N)也被称为线性时间。相比之下,O(1)则为一条水平线,因为不管数据量是多少,算法的步数都恒定。所以,O(1)也被称为常数时间。

因为大O主要关注的是数据量变动时算法的性能变化,所以你会发现,即使一个算法的恒定步数不是1,它也可以被归类为O(1)。假设有个算法不能1步完成,而要花3步,但无论数据量多大,它都需要3步。如果用图形来展示,该算法应该是这样:

因为不管数据量怎样变化,算法的步数都恒定,所以这也是常数时间,也可以表示为O(1)。虽然从技术上来说它需要3步而不是1步,但大O记法并不纠结于此。简单来说,O(1)就是用来表示所有数据增长但步数不变的算法。

如果说只要步数恒定,3步的算法也属于 O(1),那么恒为100步的算法也属于 O(1)。虽然100步的算法在效率上不如1步的算法,但如果它的步数是恒定的,那么它还是比O(N)更高效。

为什么呢?如图所示。

对于元素量少于100的数组,O(N)算法的步数会少于100步的O(1)算法。当元素刚好为100个时,两者的步数同为100。而一旦超过100个元素,注意,O(N)的步数就多于O(1)。

因为数据量从这个临界点开始,直至无限,O(N)都会比O(1)花更多步数,所以总体上来说,O(N)比O(1)低效。

这对于步数恒为1000000的O(1)算法来说也是一样的。当数据量一直增长时,一定会到达一个临界点,使得O(N)算法比O(1)算法低效,而且这种落后的状况会持续到数据量无限大的时候。

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

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

相关文章

Recuva v1.53 解锁版使用步骤 (免费的文件恢复工具)

前言 Recuva中文版是一款免费的文件恢复工具,可以用来恢复误删除的文件,能直接恢复硬盘数据,U盘文件等,Recuva数据恢复软件小巧实用,扫描速度非常快,只要没有被重复写入数据,无论格式化还是删除均可以直接恢复。 一、下载地址 下载链接:http://dygod/source 点击…

彩色动态3D相机

彩色动态3D相机 透明、 半透明和有光泽物体的3D扫描 在物流、汽车和制药领域实现新的自动化 清晰和完整的扫描 新的3D扫描方法可以显著改善信号读出 透明、半透明和有光泽的对象,以提供更高的完整性和质量 的 3D 即使不需要使用涂层和扫描喷雾,也可以…

Markdown快速生成PPT!用这2个AI办公软件就够了!

对于喜欢使用Markdown编辑内容的人来说,经常会遇到诸如此类的需求: Markdown怎么生成PPT?Markdown怎么生成思维导图?Markdown怎么生成Word,或是导出为Word?Markdown怎么生成表格?…… 使用了比…

晋级国赛!卓翼飞思技术引领,助力辽宁赛区机器人及人工智能大赛圆满收官

近日,第二十六届中国机器人及人工智能大赛—辽宁赛区选拔赛在大连海事大学圆满收官。本次大赛吸引来自辽宁工业大学、大连理工大学等知名高校的10余支队伍参与,充分展现各高校在机器人及人工智能领域的深厚实力和创新精神。其中,由卓翼飞思实…

入门篇:创建和运行Hello World

DevEco Studio安装完成后,可以通过运行Hello World工程来验证环境设置是否正确。接下来以创建一个支持Phone设备的工程为例进行介绍。 创建一个新工程 打开DevEco Studio,在欢迎页单击Create Project,创建一个新工程。根据工程创建向导&…

医药研发项目管理系统:适合CRO/CDMO企业使用的项目管理系统有哪些?

近日,北京民康百草医药科技有限公司(以下简称“民康百草”)与北京瑞杰智能科技有限公司(以下简称“瑞杰科技”)宣布达成战略合作,双方将共同打造一套符合民康百草企业特色的研发项目管理系统。该系统将基于…

GPT-5:编织未来智能的经纬

GPT-5技术突破预测 随着GPT-5的预告,人工智能的叙事正步入一个崭新的篇章。想象中的GPT-5不仅是自然语言处理(NLP)领域的革命,更是对“理解”本身的一次重新定义。它可能集成深度学习的最新进展,如自注意力机制的进一步…

java 操作 milvus 2.1.4

1. 确认 docker 运行的 milvus容器镜像版本情况&#xff1a; 2. pom 依赖&#xff1a; <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.1.0</version><exclusions><exclusi…

ubuntu篇---添加环境变量并且在pycharm中使用

ubuntu篇—添加环境变量并且在pycharm中使用 一. 添加环境变量 vim ~/.bashrc 在文件末尾加上 保存退出 source ~/.bashrc二. 在pycharm中添加环境变量 1.打开pycharm&#xff0c;并打开你的项目 2.点击菜单栏中的“Run”&#xff0c; 选择“Edit Configurations” 3.在弹…

一天跌20%,多只可转债“腰斩”,近百只跌破面值,“退可守”的香饽饽为何破防?

专业人士指出&#xff0c;近期部分可转债大跌原因主要有两点&#xff1a;一方面&#xff0c;转债市场与权益市场联动性强。另一方面&#xff0c;近期公布的宏观经济数据稳中趋缓&#xff0c;“供强需弱”特征依然明显&#xff0c;证监会主席吴清发言及“科创板八条”新规延续了…

Spring Cloud - nacos +ubuntu环境搭建

1、安装ubuntu虚拟环境 VMware虚拟机安装Ubuntu与配置Ubuntu&#xff08;超详细教程&#xff09; 2、docker环境安装 1、apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 2、curl -fsSL https://mirrors.ustc.edu.cn/docke…

百问网全志D1h开发板HDMI、IR、WIFI功能适配

HDMI、IR、WIFI 适配 DTS 文件 ./device/config/chips/d1-h/configs/nezha/uboot-board.dts./device/config/chips/d1-h/configs/nezha/linux-5.4/board.dts 分区文件 ./target/allwinner/d1-h-nezha/swupdate/sys_partition_ab.fex 默认 HDMI 输出 这里我希望开机就是默认…

ESXI 7.0 之间互传文件

前言、思路分析 ESXI 7.0 之间互传文件 1.vcenter 使用 vmotion 热迁移 2.不用vcerter, 直接使用Esxi cli 使用linux SCP 命令进行ESXI 主机之间数据传输。 未加vcenter ,不使用vcentre ------使用ssh , 使用scp---开启ssh 服务---- 源开启ssh 客-户端----组织scp 命令--…

昇思25天学习打卡营第9天 | 静态图加速

内容介绍&#xff1a; AI编译框架分为两种运行模式&#xff0c;分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行&#xff0c;但也支持手工切换为静态图模式。两种运行模式的详细介绍如下&#xff1a; 动态图模式&#xff1a; 动态图的特点是计算图的…

移远通信发布两款Wi-Fi 6模组新品:率先采用亚马逊ACK SDK for Matter方案实现互联互通

6月26日 &#xff0c;在MWC上海展上&#xff0c;全球领先的物联网整体解决方案供应商移远通信联合亚马逊及上海博通现场宣布&#xff0c;推出支持亚马逊Alexa Connect Kit &#xff08;ACK&#xff09;SDK for Matter方案的MCU Wi-Fi 6模组FLM163D和FLM263D。 后续&#xff0c;…

论文降重困难重重?AI降重来帮忙

论文查重和降重是确保学术成果原创性及学术诚信的关键步骤&#xff0c;直接影响我们的学业成果和毕业资格。传统的论文查重方法主要包括使用查重软件和个人自查&#xff0c;而论文降重通常涉及改写、使用同义词替换、内容的扩展和深化&#xff0c;以及正确的引用和注释等方式来…

硬件实用技巧:电容精度和常用容值表

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140009042 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

Sentinel链路流控模式失效的解决方法

解决方法 1、在pom.xml中增加sentinel-web-servlet的依赖&#xff0c;我使用的版本是1.7.1 <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-web-servlet</artifactId> </dependency>2、在项目中添加一个FilterCon…

汇川H5u小型PLC作modbusRTU从站设置及测试

目录 新建工程COM通讯参数配置协议选择协议配置 查看手册Modbus地址对应关系仿真测试 新建工程 新建一个H5U工程&#xff0c;不使用临时工程 系列选择H5U即可 COM通讯参数配置 协议选择 选择ModbusRTU从站 协议配置 端口号默认不可选择 波特率这里使用9600 数据长度&…

Studying-代码随想录训练营day21| 669.修建二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、二叉树总结

第21天&#xff0c;二叉树最后一篇&#xff0c;冲&#x1f4aa; 目录 669.修建二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 二叉树总结 669.修建二叉搜索树 文档讲解&#xff1a;代码随想录修建二叉搜索树 视频讲解&#xff1a;手撕修建二叉…