算法基础详解

大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.mfbz.cn/a/751765.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

守护矿山安全生产:AI视频分析技术在煤矿领域的应用

随着人工智能(AI)技术的快速发展,其在煤矿行业的应用也日益广泛。AI视频智能分析技术作为其中的重要分支,为煤矿的安全生产、过程监测、效率提升和监管决策等提供了有力支持。 一、煤矿AI视频智能分析技术的概述 视频智慧煤矿AI…

Idea 插件 Convert YAML and Properties File

YAML 和 Properties 相互转换插件 ConvertYamlAndProperties: IntelliJ IDEA plugin - Convert Yaml And Properties Files

服务器部署—虚拟机安装nginx并部署web网页

该篇博客用于讲解Linux的Centos7发行版中如何通过Linux安装Nginx,然后将静态页面部署到Nginx中,通过浏览器访问。 非常适用于新手小白学习项目部署相关的知识。建议收藏!!! 需要大家提前准备好虚拟机和CentOS7操作系统…

【博士每天一篇文献-综述】A survey on few-shot class-incremental learning

阅读时间:2023-12-19 1 介绍 年份:2024 作者:田松松,中国科学院半导体研究所;李璐思,老道明大学助理教授;李伟军,中国科学院半导体研究所AnnLab; 期刊: Neu…

docker部署vue项目

1.下载docker desktop软件 Docker Desktop启动的时候,有可能弹框提示"WSL2 installations is incomplete",这是您的系统中没有安装WSL2内核的原因,打开【https://aka.ms/wsl2kernel ,在打开的页面中有一个Linux内核更新包"链…

NDT(基于正态分布变换的配准算法)

NDT是将单个扫描的离散点集转换为空间上定义的分段连续可微概率密度,该概率密度由一组易于计算的正态分布组成的算法。采用NDT连续化后,传统硬离散优化问题能够潜在地转化为更易于处理的连续优化问题。 NDT原理 NDT将根据点云中点所处的位置&#xff0…

AudioLM音频生成模型

GPT-4o (OpenAI) AudioLM(Audio Language Model)是一种生成音频的深度学习模型。它可以通过学习语言模型的结构来生成连贯和高质量的音频信号。这类模型通常应用于语音合成、音乐生成和音频内容生成等领域。以下是一些与AudioLM相关的核心概念和技术细…

基于uni-app与图鸟UI的移动应用模板构建研究

摘要 随着移动互联网技术的迅猛发展,移动端应用已成为企业展示形象、提供服务的重要窗口。本文基于uni-app框架和图鸟UI设计,深入探讨了如何高效构建覆盖多个领域的移动端应用模板。通过对商城、办公、投票、生活服务等多种类型模板的详细介绍&#xff…

【数据结构与算法】内部排序算法 详解

指出希尔排序,归并排序,快速排序,堆排序,基数排序中稳定的排序方法,并对不稳定的举出反例。 稳定的排序算法是指,如果两个元素相等,它们在排序后的顺序与排序前的顺序相同。 上述算法中稳定的…

昇思25天学习打卡营第10天|基于MindSpore的GPT2文本摘要

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) 基于MindSpore的GPT2文本摘要 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall m…

Duix - 硅基数字人SDK

简介 Introduction DUIX(Dialogue User Interface System)是硅基智能打造的AI数字人智能交互平台。通过将数字人交互能力开源,开发者可自行接入多方大模型、语音识别(ASR)、语音合成(TTS)能力,实现数字人实时交互,并在Android和iOS多终端一键部署,让每个开发者可轻松…

2、逻辑回归

1. 为什么要叫逻辑回归? 逻辑回归模型的名称可能会引起一些混淆,因为它名字中包含了"回归"这个词,但实际上它是一种用于解决分类问题的模型,而不是回归问题。 逻辑回归最初是从线性回归模型演变而来的。线性回归用于预测连续的数值输出,逻辑回归则是在线性回归…

shell 脚本中断问题定位

shell 脚本中断问题定位 1 介绍2 定位方法2.1 查看脚本的退出状态码2.2 查看系统日志文件2.3 使用journalctl工具2.4 使用dmesg命令2.5 检查脚本自身的日志记录2.6 使用图形界面工具2.7 配置和使用集中式日志管理系统 参考 1 介绍 shell 脚本运行,一段时间后&#…

SQL注入和防御方法

SQL注入是一种攻击手段,通过在SQL查询中插入恶意SQL代码片段,欺骗数据库服务器执行非授权的数据库操作。这种攻击可能导致数据泄露、篡改或丢失。为了防范SQL注入,可以采取以下几种策略: 1.使用预编译语句(Prepared St…

戴尔笔记本重装系统?笔记本卡顿失灵?一键重装系统!

随着科技的快速发展,笔记本电脑已成为我们日常生活和工作中不可或缺的工具。然而,随着时间的推移,笔记本可能会遇到各种问题,如系统卡顿、失灵等。这时,重装系统往往是一个有效的解决方案。本文将详细介绍如何在戴尔笔…

stm32-USART通信

什么是usart?和其他通信又有什么区别? 如下图: USART是一种用于串行通信的设备,可以在同步和异步模式下工作。 usart有两根数据线,一根发送线(tx)一根接收线(rx)&#x…

2、Redis持久化与高可用架构

一、Redis 持久化 RDB 快照(Snapshot) 基本概念:RDB(Redis DataBase)快照是将 Redis 内存中的数据在某个时间点保存到磁盘中的一种持久化方式,默认保存到 dump.rdb 的二进制文件中。通过 RDB 快照&#xff…

Pytorch课程论文设计参考

Pytorch下基于卷积神经网络的手写数字识别 论文格式 利用wps初步美化论文格式教程 wps论文格式变的的原因 格式变的根本原因是word为流式文件,就算同是word同一个版本不同电脑也会有可能变,字体变是因为没有嵌入字体然后观看的那台没有这个字体。 一、…

Excel单元格输入逐字动态提示可选输入效果制作

Excel单元格输入逐字动态提示可选输入效果制作。INDEX函数整理动态列表,再配合IF函数干净界面,“数据验证”完成点选。 (笔记模板由python脚本于2024年06月27日 22:26:14创建,本篇笔记适合喜欢用Excel处理数据的coder翻阅) 【学习的细节是欢悦…

视频监控管理平台LntonCVS智能视频监控平台系统详细介绍

安防视频监控平台LntonCVS以其卓越的灵活性和便捷的部署特性在众多同类产品中脱颖而出。它不仅支持多种主流标准协议,如国标GB28181、RTSP/Onvif、RTMP等,还兼容了海康Ehome、海大宇等厂家的私有协议和SDK接入,为用户提供了更加丰富的选择。 …