数据结构复习指导之绪论(算法的概念以及效率的度量)

文章目录

绪论:

2.算法和算法评价

知识总览

2.1算法的基本概念

知识点回顾与重要考点

2.2算法效率的度量

知识总览

1.时间复杂度

2.空间复杂度

知识点回顾与重要考点

归纳总结


绪论:

2.算法和算法评价

知识总览

2.1算法的基本概念

算法( Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。此外,一个算法还具有下列五个重要特性:

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

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

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

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

5)输出一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。通常,设计一个“好”的算法应考虑达到以下目标:

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

        2)可读性。算法应具有良好的可读性,以帮助人们理解。

        3)健壮性。算法能对输入的非法数据做出反应或处理,而不会产生莫名其妙的输出。

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

知识点回顾与重要考点

2.2算法效率的度量

知识总览

1.时间复杂度

一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。

算法中基本运算(最深层循环中的语句)的频度与T(n)同数量级,因此通常将算法中基本运算的执行次数的数量级作为该算法的时间复杂度。于是,算法的时间复杂度记为T(n)=O(f(n))

式中,O的含义是T(n)的数量级,其严格的数学定义是:若T(n)和 fn)是定义在正整数集合上的两个函数,则存在正常数C和n,使得当n≥n时,都满足0≤T(n)≤Cf(n)。

算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入数据的性质(如输入数据元素的初始状态)。例如,在数组A [ 0...n- 1]中,查找给定值k的算法大致如下:

i=n-l;
while (i>=0&&(A[i]!=k))
i--;
return i;

该算法中语句3(基本运算)的频度不仅与问题规模n有关,而且与下列因素有关:

若A中没有与k相等的元素,则语句3的频度f(n)=n。
②若A的最后一个元素等于k,则语句3的频度f(n)是常数0。最坏时间复杂度是指在最坏情况下,算法的时间复杂度。


平均时间复杂度是指所有可能输入实例在等概率出现的情况下,算法的期望运行时间。

最好时间复杂度是指在最好情况下,算法的时间复杂度。

一般总是考虑在最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长。在分析一个程序的时间复杂性时,有以下两条规则:

1)加法规则:T(n)=T(n)+T,(n)=O(f(n))+O(gn))=O(max(f(n), g(n))

2)乘法规则: T(n)=T(n)xT;(n)=O(f(n))×O(g(n))=o(f (n)×g(n))

2.空间复杂度

算法的空间复杂度S(n)定义为该算法所需的存储空间,它是问题规模n的函数,记为

S(n)=O(g(n))

一个程序在执行时除需要存储空间来存放本身所用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为实现计算所需信息的辅助空间。若输入数据所占空间只取决于问题本身,和算法无关,则只需分析除输入和程序之外的额外空间。例如,若算法中新建了几个与输入数据规模n相同的辅助数组,则空间复杂度为O(n)。

算法原地工作是指算法所需的辅助空间为常量,即O(1)。


知识点回顾与重要考点

归纳总结

本章的重点是分析程序的时间复杂度。一定要掌握分析时间复杂度的方法和步骤,很多读者
在做题时一眼就能看出在厅出的两种形式,供大家参考。人众多资料,总结出了此类题型的两种形式,供大家参考。

1.循环主体中的变量参与循环条件的判断
在用于递推实现的算法中,首先找出基本运算的执行次数x与问题规模n之间的关系式,解得x=f(n),f(n)的最高次幂为k,则算法的时间复杂度为O(n^{k})。例如,

1.

int i=1;
while(i<=n)
i=i*2;

2.

int y=5;
while((y+1)*(y+1)<n)
y=y+1;


在例1中,设基本运算i=i*2的执行次数为t,则2^{t}\leqslant n,解得t\leqslant \log_{2}n,故 T(n)=O(\log_{2}n)

在例2中,设基本运算y=y+1的执行次数为t,则t=y-5,且(t+5+1)(t+5+1)<n,解得t<√n-6,即 T(n)= O( √n )。

2.循环主体中的变量与循环条件无关
此类题可采用数学归纳法或直接累计循环次数。多层循环时从内到外分析,忽略单步语句、条件判断语句,只关注主体语句的执行次数。

此类问题又可分为递归程序和非递归程序:

·递归程序一般使用公式进行递推。时间复杂度的分析如下:
T(n)=1+T(n-1)=1+1+T(n-2)=…=n-1+ T(1)
即T(n)=O(n)

·非递归程序的分析比较简单,可以直接累计次数。
 

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

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

相关文章

端口协议(爆破、未授权)

常见端口服务及攻击方向&#xff1a; 弱口令爆破 工具&#xff1a;https://github.com/vanhauser-thc/thc-hydra hydra是一个支持多协议的自动化的爆破工具。 支持的服务、协议&#xff1a; telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-…

Java基础-知识点04(面试|学习)

Java基础-知识点04 Object类wait和notify需要在什么地方使用&#xff1f;说明 toString() 方法的作用和重写时的注意事项。toString() 方法在实际开发中的应用场景和作用。 continue、break 和 return 的区别1、continue&#xff1a;2、break&#xff1a;3、return&#xff1a;…

HarmonyOS NEXT星河版之实战知乎App评论功能

文章目录 一、目标完成页面二、实战2.1 定义数据2.2 mock数据2.3 封装顶部标题栏2.4 封装评论Item2.5 定义回复组件2.6 主页面 三、小结 一、目标完成页面 二、实战 2.1 定义数据 export interface ReplyItem {avatar: ResourceStr // 头像author: string // 作者id: number …

Python和Java哪个更适合后端开发?

Python和Java都是强大的后端开发语言&#xff0c;它们各自有鲜明的特点和适用场景。选择哪一个更适合后端开发&#xff0c;主要取决于具体的项目需求、团队技术栈、个人技能偏好以及长期发展考虑等因素。 下面是两者在后端开发中的优势和劣势&#xff1a; 「Python&#xff1…

【vue】defineProps 传数据 父传子

先行知识 【vue】导入组件 传值过程 App.vue <template><Header name"1234567890" url"https://www.1234567890.com" /><hr><!-- <Footer v-bind"propsWeb" /> --><Footer :"propsWeb" /><h…

ETL中如何运用好MQ消息集成

一、ETL的主要作用 ETL&#xff08;Extract, Transform, Load&#xff09;是数据仓库中的关键环节&#xff0c;其主要作用是将数据从源系统中抽取出来&#xff0c;经过转换和清洗后加载到数据仓库中。具体而言&#xff1a; Extract&#xff08;抽取&#xff09;&#xff1a;从…

Python | Leetcode Python题解之第24题两两交换链表中的节点

题目&#xff1a; 题解&#xff1a; class Solution:def swapPairs(self, head: ListNode) -> ListNode:dummyHead ListNode(0)dummyHead.next headtemp dummyHeadwhile temp.next and temp.next.next:node1 temp.nextnode2 temp.next.nexttemp.next node2node1.next…

2024年制冷设备行业现状分析

环洋咨询Global Info Research的制冷设备市场调研报告提供制冷设备市场的基本概况&#xff0c;包括定义&#xff0c;分类&#xff0c;应用和产业链结构&#xff0c;同时还讨论发展政策和计划以及制造流程和成本结构&#xff0c;分析制冷设备市场的发展现状与未来市场趋势&#…

探索分布式技术--------------注册中心zookeeper

目录 一、ZooKeeper是什么 二、ZooKeeper的工作机制 三、ZooKeeper特点 四、ZooKeeper数据结构 五、ZooKeeper应用场景 5.1统一命名服务 5.2统一配置管理 5.3统一集群管理 5.4服务器动态上下线 5.5软负载均衡 六、ZooKeeper的选举机制 6.1第一次启动选举机制 6.2非…

鸿蒙应用开发之搜索框组件

前面学习了滚动组件,现在来学习搜索框组件。 这个搜索框组件,其实比较像探索网站的输入,可以输入内容,并且带有一个搜索的按钮。不过,这个组件还是缺少了一个搜索输入历史提示,或者说是输入内容动态提示的功能,这个还需要开发人员自己来完善这个功能。 这个搜索框大体如…

深度学习入门(3)

一、感知机 感知机接收多个输入信号&#xff0c;输出一个信号。这里所说的“信号”可以想象成电流或河流那样具备“流动性”的东西。 但是&#xff0c;和实际的电 流不同的是&#xff0c;感知机的信号只有“流 / 不流”&#xff08; 1 / 0 &#xff09;两种取值。在本书中&…

Itasca pfc3d/3dec/flac3d/massflow 9.0 授权

所有 Itasca 软件都建立在每个程序基础的共同元素层之上——无论程序使用何种数值方法或元素。因此&#xff0c;无论是使用 DEM 软件&#xff08;如 3DEC 或 PFC&#xff09;&#xff0c;还是使用 FLAC3D 等连续体软件&#xff0c;都会有许多流程、实用程序和功能是所有这些软件…

2011年认证杯SPSSPRO杯数学建模B题(第二阶段)生物多样性的评估全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 B题 生物多样性的评估 原题再现&#xff1a; 2010 年是联合国大会确定的国际生物多样性年。保护地球上的生物多样性已经越来越被人类社会所关注&#xff0c;相关的大规模科研和考察计划也层出不穷。为了更好地建立国际交流与专家间的合作&…

【论文速读】| CovRL:基于覆盖引导的强化学习对LLM基础变异进行JavaScript引擎模糊测试

本次分享论文为&#xff1a;CovRL: Fuzzing JavaScript Engines with Coverage-Guided Reinforcement Learning for LLM-based Mutation 基本信息 原文作者&#xff1a;Jueon Eom, Seyeon Jeong, Taekyoung Kwon 作者单位&#xff1a;延世大学、苏瑞软科技公司 关键词&#…

ubuntu或类Debian获取某些包的离线版本-包括依赖(还有一些意想不到的用途,哈哈)

前言 偶尔能碰到很特殊的情况。网址白名单&#xff0c;纯内网&#xff0c;超多依赖及一些很难描述的场景。 比如一些少见的发行版缺少某些包。这时候可以找一台类似的系统环境来下载离线包及 其依赖包&#xff0c;然后转移到内网进行安装。如果是网址白名单&#xff0c;或者纯内…

解决跨域和https不能访问的问题。

本地安装了项目,是一键安装的,安装之后还是apache的web服务器,有个视频服务用的是https的服务,要对这个项目进行二次开发,本地调用没问题,可是别人已调用就跨域。只能本地访问。 现在有两个问题:1.解决跨域问题 2.还要解决https访问的问题。 解决思路,用nginx 的ssl证…

37-代码测试(下):Go语言其他测试类型及IAM测试介绍

。 Go中的两类测试&#xff1a;单元测试和性能测试。 我就来介绍下Go 语言中的其他测试类型&#xff1a;示例测试、TestMain函数、Mock测试、Fake测试等&#xff0c; 示例测试 示例测试以Example开头&#xff0c;没有输入和返回参数&#xff0c;通常保存在example_test.go…

ChatGPT-4 Turbo 今天开放啦!附如何查询GPT-4 是否为 Turbo

2024年4月12日&#xff0c;OpenAI在X上宣布GPT-4 Turbo开放了&#xff01;提高了写作、数学、逻辑推理和编码方面的能力。另外最重要的是&#xff0c;响应速度更快了&#xff01;&#xff01; ChatGPT4 Turbo 如何升级&#xff1f;解决国内无法升级GPT4 Turbo的问题&#xff0…

云端漫步:如何免费享受亚马逊云服务器的12个月奇妙旅程

前言&#xff1a; 废话不多说&#xff0c;开头就直接上体验链接 亚马逊科技 (免费试用产品专属链接)包括灵活的Amazon EC2云服务器、稳定的Amazon RDS数据库服务、可扩展的Amazon S3云存储空间等等常见云服务产品。福利很大&#xff0c;有需要的朋友赶紧冲冲冲&#xff01; 想…

电商技术揭秘十三:云计算在电商中的应用场景

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…