数据结构——算法和算法分析

目录

算法和算法分析

算法

算法设计的要求

算法效率的度量

算法的存储空间需求


算法和算法分析

算法

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。

一个算法具有下列5个重要的特性:

(1)有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,而且每一步都可以在有穷时间内完成。

(2)确定性:算法中的每一条指令必须有确切的含义,读者理解时不会产生二义性。

(3)可行性:一个算法是能行的。

(4)输入:一个算法有零个或多个输入,这些输入取自与某个特定的对象的集合。

(5)输出:一个算法有一个或多个输出,这些输出是同输入有着某些特定的关系的量。

算法设计的要求

(1)正确性。算法应该满足具体问题的需求。

(2)可读性。

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

(4)效率与低存储量需求。效率是指算法的执行时间;存储量需求指算法执行过程中所需要的最大存储空间。效率与低存储量需求这两者都与问题的规模有关。

算法效率的度量

算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。而度量一个程序的执行时间通常有两种方法。

(1)事后统计的方法。

(2)事前分析估算的方法。

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作:

T(n)=O(f(n))

它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度

显然,被称做问题的基本操作的原操作应是其重复执行次数和算法的执行时间成正比的原操作,多数情况情况下它是最深层循环内的语句中的原操作,它的执行次数和包含它的语句的频度相同。语句的频度指的是该语句重复执行的次数。

算法的存储空间需求

类似于算法的空间复杂度,本书中以空间复杂度作为算法所需存储空间的度量,记作:

S(n)=O(f(n))

其中n为问题的规模(或大小)。

文章为本人学习笔记,知识点整理参考严蔚敏《数据结构》(C语言版)。如有错误,欢迎大家指正!

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

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

相关文章

Python3:多行文本内容转换为标准的cURL请求参数值

背景 在最近的工作中,经常需要处理一些接口请求的参数,参数来源形式很多,可能是Excel、知识库文档等,有些数据形式比较复杂,比如多行或者包含很多不同的字符,示例如下: **客服质检分析指引** …

BaseCTF [第一周]Ez Xor

笔记。 64ida打开。 走! 逆向逆向,逆向往前看。 因为异或算法,A ^BC >>> C^BA 所以在只需要知道密钥key就可以了。 是不是头大? 没事 这里介绍另一种方法>>> IDA 动态调试去获取key值、密文值 。(灵活使用工…

【MATLAB源码-第253期】基于matlab的8PSK调制载波+相位+符号定时联合估计仿真,输出星座图等。

操作环境: MATLAB 2022a 1、算法描述 1. 系统背景和目标 8PSK是一种调制方式,其中信号的相位被分成8个不同的状态,每个状态代表3比特的数据。这个过程涉及将比特序列转换为相应的相位,经过调制后传输给接收端。在接收端&#…

硬件检测工具箱 | 入梦工具箱 v8.8

入梦工具箱(RM Toolbox)是一款专为硬件检测、评分和测试设计的免费开源软件。它以其小巧的体积和简洁的界面,迅速成为DIY玩家和硬件爱好者的首选工具。 功能特点 集成常用硬件检测工具:包括CPUZ、GPUZ、AIDA64等,全面…

HTML5简洁的通用网站模板源码

文章目录 1.设计来源1.1 主界面1.2 模板页面11.3 模板页面21.4 模板页面31.5 模板页面41.6 模板页面5 2.效果和源码2.1 动态效果2.2 源码目录2.3 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/1413235…

微服务CI/CD实践(一)环境准备及虚拟机创建

微服务CI/CD实践系列: 微服务CI/CD实践(一)环境准备及虚拟机创建 微服务CI/CD实践(二)gitlabs部署 微服务CI/CD实践(三)nexus3部署 微服务CI/CD实践(四)数据库,redis,n…

JWT-JSON Web Token

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。 1 跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 用户向服务器发送用户名和密码。服务器验证通过后,在当前对话(session)里面保存相关数据,比如用…

Golang | Leetcode Golang题解之第357题统计各位数字都不同的数字个数

题目&#xff1a; 题解&#xff1a; func countNumbersWithUniqueDigits(n int) int {if n 0 {return 1}if n 1 {return 10}ans, cur : 10, 9for i : 0; i < n-1; i {cur * 9 - ians cur}return ans }

机器学习辅助复合材料预测,性能管理优化创新材料,这种王炸般的组合,还真是大开眼界!

在人工智能与复合材料技术融合的背景下&#xff0c;复合材料的研究和应用正迅速发展&#xff0c;创新解决方案层出不穷。从复合材料性能的精确预测到复杂材料结构的智能设计&#xff0c;从数据驱动的材料结构优化到多尺度分析&#xff0c;人工智能技术正以其强大的数据处理能力…

xss GAME (xss漏洞攻击1-8)

目录 xss网页链接 第一关 第二关 第三关 ​编辑第四关 ​编辑第五关 ​编辑第六关 第七关 第一种 Function构建函数 第二种 tostring parseInt 第三种 silce() ​编辑第八关&#xff08;安全过滤框架 dom破坏&#xff09; xss网页链接 XSS Game - Learning XSS Ma…

袋鼠云产品功能更新报告11期|能力AI+,实力拿捏!

本期&#xff0c;我们更新和优化了离线AI、实时AI、实时湖仓CDC入湖等功能&#xff0c;为您提供更高效、更智能的产品能力。以下为第11期袋鼠云产品功能更新报告&#xff0c;请继续阅读。 报告速览 离线AI&#xff1a;智能代码优化、智能注释、智能解释、Text 2 SQL 以及日志…

前端面试题整理-webpack

实现前端模块化&#xff0c;将多个 js&#xff0c;打包成一个 bundle.js (其他类型文件交由各自的 loader 处理) 1. webpack 了解吗&#xff1f;大概介绍一下 一种打包工具&#xff0c;实现前端模块化&#xff0c;将多个 js&#xff0c;打包成一个 bundle.js (其他类型文件交…

婚恋交友系统该如何制作成品系统?

制作婚恋交友系统的成品系统是一个综合性的过程&#xff0c;涉及多个关键步骤和技术要点。以下是一个详细的制作流程&#xff1a; 1. 需求分析 市场调研&#xff1a;首先需要对婚恋交友市场进行深入调研&#xff0c;了解目标用户群体的需求、喜好、习惯以及市场痛点。用户画像…

进程创建:fork函数

fork函数 在Linux系统中&#xff0c;fork函数是用于创建一个新的进程的函数。调用fork函数会创建一个新的进程。 fork函数的原型如下&#xff1a; #include <unistd.h>pid_t fork(void);fork函数没有参数&#xff0c;返回值是一个pid_t类型的值。在成功创建新的进程后…

官方强烈建议更新,关键漏洞影响GitHub Enterprise Server 所有版本

近日&#xff0c;GitHub Bug Bounty 计划报告了一个影响 GitHub Enterprise Server&#xff08;GHES&#xff09;当前所有支持版本的关键漏洞&#xff08;CVE-2024-6800&#xff09;&#xff0c;该漏洞可能允许攻击者获得对该实例内容的无限制访问。目前&#xff0c;漏洞已经解…

Q*算法深度猜想:从Q-learning优化到智能决策

Q*算法深度猜想&#xff1a;从Q-learning优化到智能决策 引言 在强化学习&#xff08;Reinforcement Learning&#xff09;中&#xff0c;Q-learning算法作为一种无模型的学习方法&#xff0c;被广泛应用于解决各种决策优化问题。然而&#xff0c;尽管Q-learning在许多场景下…

docker容器基本命令、docker进入容器的指令、容器的备份、镜像底层原理、使用commit命令制造镜像、将镜像推送到阿里云镜像仓库与私服仓库

除了exit 还有 ctrlpq exit退出停止 ctrlpq 退出不停止 将本地镜像推到阿里云 登入阿里云 容器镜像服务 实力列表 镜像仓库 创建镜像仓库 安装里面步骤来 这里192.168.10.145这部分用自己ifconfig地址

6款ai伪原创软件app,自动生成文章效率更高

在当今信息爆炸的时代&#xff0c;内容创作的需求日益增长。无论是专业的写手、自媒体从业者&#xff0c;还是企业的营销人员&#xff0c;都在不断寻求提高创作效率的方法。而ai伪原创软件app的出现&#xff0c;为创作者们带来了新的解决方案。下面就为大家介绍6个强大的ai伪原…

CICD持续集成持续交付部署

一、CICD概念 1、什么是CI/CD&#xff1f; 通俗来说就是启动一个服务&#xff0c;能够监听代码变化&#xff0c;然后自动执行构建、测试、打包、发布等流程&#xff1b; 2、CI 持续集成 指在开发人员频繁地提交新代码&#xff0c;都会自动执行构建、测试。根据测试结果&…

6.登录功能的开发——获取当前用户、用户退出

登录功能的开发——获取当前用户、用户退出 一、获取当前用户1.1后端处理1.2前端处理 二、用户的退出2.1后端2.2前端 一、获取当前用户 在上一篇文章&#xff0c;我们实现了用户的的登录&#xff0c;但是后续并没有处理完整&#xff0c;比如登录成功后你要跳转回原来的的页面吧…