算法的基本概念和复杂度

目录

  • 一. 算法的基本概念
    • 1.1 什么是算法
    • 1.2 算法的五个特性
    • 1.3 怎么才算好的算法
  • 二. 算法的时间复杂度
  • 三. 算法的空间复杂度

\quad

一. 算法的基本概念

\quad

在这里插入图片描述

\quad

1.1 什么是算法

在这里插入图片描述
算法可以用自然语言来描述, 也可以用伪代码和代码来描述

\quad

1.2 算法的五个特性

有穷性, 一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。

在这里插入图片描述
所以死循环就不是算法

\quad
\quad

确定性, 算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。

在这里插入图片描述
按照年龄来排会得到下面两个结果
解决方法可以是岁数相同的话, 就按金额来排

\quad
\quad

可行性。算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。

可行性说白了就是可以实现的

输入。一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
输出。一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

\quad
\quad

1.3 怎么才算好的算法

\quad

1.正确性。算法应能够正确地解决求解问题。

2.可读性。算法应具有良好的可读性,以帮助人们理解。(多写注释)

3.健壮性。输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。

4.高效率(时间复杂度)与低存储量需求(空间复杂度)

在这里插入图片描述

\quad

二. 算法的时间复杂度

\quad

在这里插入图片描述
\quad
\quad
在这里插入图片描述
\quad
\quad

在这里插入图片描述

在这里插入图片描述
在外面套个O

\quad
\quad
重点, 判断时间复杂度
在这里插入图片描述
在这里插入图片描述
\quad
\quad

在这里插入图片描述
\quad
\quad
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

\quad

三. 算法的空间复杂度

\quad

在这里插入图片描述
n是问题规模, 不管n的值是如何变化, 这个算法在执行的过程当中它所需要的内存空间大小都是固定不变的

算法所需的内存空间为常量, 称为算法原地工作

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

虽然都是n,a,b,c但是每一次调用都是开辟新的空间

在这里插入图片描述
空间复杂度=递归调用的深度

在这里插入图片描述

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

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

相关文章

【C#动态加载数据】“防界面卡死”

废话不多说,直接开始 添加引用 using System.ComponentModel 完整代码 using System; using System.ComponentModel; using System.Data; using System.Windows.Forms; using System.Data.SqlClient; // 引入SqlClient命名空间以使用ADO.NET public part…

Flink 流处理框架核心性能

Apache Flink 是一款先进的开源分布式数据处理框架,其核心特性体现了对大规模数据处理的高度适应性和灵活性,尤其在实时流处理领域展现出了卓越的技术优势: 1 高性能实时处理 Flink 引擎设计注重高吞吐量与低延迟的完美结合,可轻…

ASP.NET-Server.HtmlEncode

目录 背景: 1.转义特殊字符: 2.防止跨站脚本攻击(XSS): 3.确保输出安全性: 4.保留原始文本形式: 5.与用户输入交互安全: 实例说明: 不用Server.HtmlEncode 效果展示: 用Server.HtmlEnc…

SpringMVC重点记录

目录 1.学习重点2.回顾MVC3.回顾servlet4.初始SpringMVC4.1.为什么要学SpringMVC?4.2.SpringMVC的中重点DispatcherServlet4.3.SpringMVC项目的搭建4.4.MVC框架要做哪些事情?4.5.可能会遇到的问题 5.SpringMVC的执行原理6.使用注解开发SpringMVC7.Controller控制总结8.RestF…

VSCode ARM CortexM 开发

VSCode ARM CortexM 开发: http://coffeelatte.vip.cpolar.top/post/software/applications/vscode/vscode_arm_cortexm_开发/ 文章目录 VSCode ARM CortexM 开发: <http://coffeelatte.vip.cpolar.top/post/software/applications/vscode/vscode_arm_cortexm_%E5%BC%80%E5%…

低代码与数智制造:引领软件开发的革新之旅

在当今快速发展的数字化时代&#xff0c;软件开发已经渗透到各行各业&#xff0c;成为推动社会进步的重要力量。随着技术的不断进步&#xff0c;低代码开发与数智制造正逐渐崭露头角&#xff0c;成为引领软件开发领域革新的两大关键要素。本文将深入探讨低代码与数智制造的内涵…

鸿蒙实战开发:【分布式软总线组件】

简介 现实中多设备间通信方式多种多样(WIFI、蓝牙等)&#xff0c;不同的通信方式使用差异大&#xff0c;导致通信问题多&#xff1b;同时还面临设备间通信链路的融合共享和冲突无法处理等挑战。分布式软总线实现近场设备间统一的分布式通信管理能力&#xff0c;提供不区分链路…

音频占用磁盘空间太多 需要把mp3音频转aac音频缩小占用空间 应该怎么操作?

一&#xff1a;什么是aac格式&#xff1f; aac是一种音频压缩格式&#xff0c;它是MPEG-2标准下的一种音频压缩方式&#xff0c;也可以作为HE-AAC&#xff0c;AAC或AAC-LC格式使用&#xff0c;是音频压缩领域中的一种重要格式。与MP3的比较&#xff0c;aac在保证音质的同时可以…

K8S CNI

OCI概念 OCI&#xff0c;Open Container Initiative&#xff0c;开放容器标准&#xff0c;是一个轻量级&#xff0c;开放的治理结构&#xff08;项目&#xff09;&#xff0c;在 Linux 基金会的支持下成立&#xff0c;致力于围绕容器格式和运行时创建开放的行业标准。 OCI 项目…

零基础入门多媒体音频(2)-音频焦点

说明&#xff1a;非全职写手&#xff0c;整个系列内容的顺序可能不是循序渐进&#xff0c;后期考虑调整。目前优先编写熟练度高以及最近工作中用到的的技术。 在音频领域的开发中&#xff0c;音频焦点是个很重要的概念。在面试中也是个高频话题。通过音频焦点的引入&#xff0…

stm32-定时器输入捕获

目录 一、输入捕获简介 二、输入捕获框图 1.定时器总框图 2.输入捕获框图 3.主从触发模式 三、固件库实现 1.定时器测量PWM频率 2.PWMI模式 一、输入捕获简介 二、输入捕获框图 1.定时器总框图 上图可知&#xff0c;四个输入捕获和输出比较共用4个CCR寄存器&#x…

Android SystemServer进程解析

SystemServer进程在android系统中占了举足轻重的地位&#xff0c;系统的所有服务和SystemUI都是由它启动。 一、SystemServer进程主函数流程 1、主函数三部曲 //frameworks/base/services/java/com/android/server/SystemServer.java /** * The main entry point from zy…

element ui el-select组件添加选项下拉加载

需求描述&#xff1a;在做搜索的时候由于有一个下拉列表接口返回数据特别多所以对列表进行了一个下拉触底加载的事件&#xff0c;但是官方文档是没有对应的api的所以自己使用指令写了一个方法。 实现代码&#xff1a; <el-selectv-model"sellerNameSearchVal"v-s…

维修SedoTreepoint染色机电脑Sedomat 1800+ 5500触摸屏控制器

染厂控制器 染厂机械触摸屏控制器 Sedomat 1808 Sedomat 1808 提供 7 英​​寸用户友好型触摸屏显示屏&#xff0c;防水等级为 IP67。它保证了恶劣环境下的高质量和可靠性。RFID阅读器提供了数据采集的可能性。内部I/O可配置以满足纱线、织物和其他类型染整机的要求。 除了这些…

代码之外的功夫:程序员精进之路 -- 阅读笔记及总结

第一章 设计原型 Ross自己也不是很明确自己的需求。——好家伙&#xff0c;太真实了。客户不能明确清晰地传递自己的需求&#xff0c;客户可能只有一个大概的目标。这时候&#xff0c;该怎么办&#xff1f; 这时候可以和客户沟通&#xff0c;先出一个草图&#xff08;线框图&…

安卓UI面试题 26-30

26. Window和DecorView是什么?DecorView又是如何和Window建立联系的?Window是 WindowManager 最顶层的视图,它负责背景(窗口背景)、Title之类的标准的UI元素, Window是一个抽 象类,整个Android系统中, PhoneWindow是 Window的唯一实现类。 至于 DecorView,它是一个顶级 …

vue+elementUI实现指定列的单元格可编辑

template中的代码如下&#xff1a; <div v-if"(item.label 高压侧 || item.label 低压侧)&&coloumnHeader.label 单柱片数"><div class"editableCell"><div v-if"item.label 高压侧" dblclick"changeValue(sco…

人工智能程序使用的编程语言

用C语言可以写人工智能程序吗&#xff1f; 可以用C语言编写具有人工智能功能的程序&#xff0c;但是较为复杂。C语言是一种通用的编程语言&#xff0c;它在执行速度和资源控制方面表现出色&#xff0c;这使得它适合于需要高性能处理的人工智能应用&#xff0c;如游戏AI&#xf…

邮件安全|“AI钓鱼邮件”愈发泛滥,钓鱼邮件如何防“钓”?

毋庸置疑&#xff0c;人工智能是把双刃剑。 在AI蓬勃发展的过程中&#xff0c;潜在的风险正在悄然滋长。 近日&#xff0c;网络安全公司Enea发布的一份报告指出&#xff0c;随着以人工智能驱动的语音钓鱼&#xff08;vishing&#xff09;和短信钓鱼&#xff08;smishing&…

tomcat中把项目放在任意目录中的步骤

java web 项目由idea开发&#xff0c;路径如下图所示&#xff1a; 1.在tomcat安装目录conf\Catalina\localhost 里面&#xff0c;编写lesson1.xml文件内容如下&#xff1a; <Context path"/lesson1" docBase"C:\Users\信息技术系\Desktop\2024\学校工作\jav…