算法效率分析基础概要
- 格式:ppt
- 大小:372.00 KB
- 文档页数:49
公共基础知识总结第一章数据结构与算法1.1 算法算法:是指解题方案的准确而完整的描述。
算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。
算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。
特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
算法复杂度:算法时间复杂度和算法空间复杂度。
算法时间复杂度是指执行算法所需要的计算工作量。
算法空间复杂度是指执行这个算法所需要的内存空间。
1.2 数据结构的基本基本概念数据结构研究的三个方面:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。
数据结构是指相互有关联的数据元素的集合。
数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。
数据的存储结构有顺序、链接、索引等。
线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3 线性表及其顺序存储结构线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。
第1章数据结构与算法1、数据的不可分割的基本单位是数据项。
2、算法的复杂度是执行算法所需要的计算工作量,取决于问题的规模和待处理数据的初态。
3、数据结构作为一门学科,主要讨论以下三方面的内容:1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;2)在对数据元素进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;3)对各种数据结构进行的运算。
4、数据在计算机内存中的表示是指数据的存储结构。
5、在数据结构中,与所使用的计算机无关的数据结构是逻辑结构。
6、在数据结构中,从逻辑上可以把数据结构分成线性结构和非线性结构。
7、栈的特点:先进后出8、队列的特点:先进先出9、树,二叉树,满二叉树,完全二叉树10、二叉树的遍历(前序,中序,后序)11、对线性表进行折半查找,要求线性表必须以顺序方式存储,且结点按关键字有序排列。
12、查找技术1)顺序查找2)二分查找(即折半查找)13、排序技术3)交换类排序(冒泡排序,快速排序)4)选择类排序(简单选择排序,堆排序)5)插入类排序(简单插入排序,西尔排序)各种排序方法时间、空间复杂度对比15、线性结构中元素之间存在一对一关系,树型结构中元素之间存在一对多的关系。
16、在双向链表中,每个结点有两个指针域,一个指向前驱结点,一个指向后继结点。
第2章程序设计基础1、程序设计经历了结构化设计(面向过程)和面向对象的程序设计阶段2、良好的编程风格应注意的因素1)源程序的文档化◆符号名的命名规则:具有一定的实际意义,便于理解程序功能◆正确的程序注释:注释分为序言性注释和功能性注释。
序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。
功能性注释一般在源程序体之中,用于描述其后的语句或程序的主要功能。
◆视觉组织:在程序中利用空格、空行、缩进等技巧使程序层次清晰。
2)数据说明的方法◆数据说明的次序规范化◆说明语句中变量安排有序化◆使用注释来说明复杂数据的结构3)语句的结构为使程序简单易懂,应注意如下:◆一行写一条语句◆编写程序优先考虑清晰性◆程序编写要做到清晰第一,效率第二◆在保证程序正确的基础上再提高效率◆避免使用临时变量而使程序的可读性下降◆避免不必要的转移◆尽量使用库函数◆避免采用复杂的条件语句◆尽量使用“否定”条件语句◆数据结构要有利于程序的简化◆要模块化,使模块功能尽可能单一◆利用信息隐蔽,确保每一个模块的独立性◆从数据出发去构造程序◆不要修补不好的程序,要重新编写4)输入输出输入输出方式和风格应尽可能方便用户的使用,考虑如下原则:◆对输入数据要检验数据的合法性◆检查输入项的各种重要组合和合理性◆输入格式要简单,使得输入的步骤和操作尽可能简单◆输入数据时,应允许使用自由格式◆应允许缺省值◆输入一批数据时,最好使用输入结束标志◆在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息◆当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性3、结构化程序设计的原则1)自顶向下:先考虑总体后考虑细节,先考虑全局目标后考虑局部目标。
年国家开放大学电大《程序设计基础》期末考题汇总.期末考试程序设计基础试题一、单项选择题(每空22分.共030分)11.当代计算机的最主要的体系结构称为是()。
AA.冯·诺依曼机BB.非冯·诺依曼机CC.图灵机DD.LPASCAL机22.现代电子计算机诞生的理论基础是()。
AA.图灵机BB.图灵测试cc.冯·诺依曼机DD.邱奇论题33.计算机软件是指()。
AA.计算机程序BB.源程序和目标程序CC.源程序DD.计算机程序及其有关文挡44.计算机能直接执行的语言是())。
AA.机器语言BB.汇编语言CC.高级语言DD.目标语言55.AJAVA语言的类别是()。
AA.面向过程的程序设计语言BB.面向问题的程序设计语言CC.面向对象的程序设计语言DD.面向硬件的程序设计语言66.在CC语言中,字符串常量的定界符是( )。
AA。
空格BB.单引号CC.双引号DD.方括号77.CC语言中tint变量能够表示的数值范围是()。
A.--32767—32768B.--32768~32767C.0~65535D.O--6553688.CC语言中的循环控制语句中属于“直到型”循环的语句是( )。
A.gotoB.whileCC.forD.do--while99.数据的存储结构分为两种,它们是()。
AA.线性存储和数组存储BB.顺序存储和链式存储CC.线性存储和树型存储DD.数组存储和指针存储10.如果在内存中采用链式保存线性表,则元素之间的逻辑关系通过())。
AA.元素在内存中的相对位置表示逻辑次序BB.保存在元素中的指针表示先后次序CC.设立单独的区域存储元素之间的逻辑次序DD.元素本身的关键字来表示逻辑次序11.栈的最主要特点是()。
AA.先进先出BB.先进后出CC.两端进出DD.一端进一端出.12.数据结构主要研究下面33方面的内容()。
A.数据的逻辑结构、存储结构和运算BB.数据的线性结构、树型结构和图结构CC数据的顺序存储、链式存储和散列存储DD.数据的线性结构和非线性结构,以及相关运算13.进行顺序查找的条件是()。
基于有效数据的经验模态分解快速算法研究胡劲松(宁波工程学院电信学院宁波 , 315010杨世锡(浙江大学机能学院杭州 , 310027摘要在介绍了经验模态分解 (简称 EM D 方法的理论和算法基础上 , 为了提高 EM D 算法的速度 , 提出了基于有效数据的 EM D 快速算法 , 即通过 EM D 分解中止的计算区域限定于有效数据段来实现算法的提速。
通过对非线性信号的实验研究表明 , 基于有效数据的 EM D 快速算法不但能显著提高算法的速度 , 而且还可以提高算法的精度。
该研究成果能广泛地用于信号时频分析领域。
关键词有效数据经验模态分解快速算法时频分析中图分类号 T P 206 T H 113. 1 T H 165. 3引言对一列时间序列数据先进行 EM D 分解 , 然后对各个分量做希尔伯特变换(Hilbert Transform a-tio n 的信号处理方法 , 是由美国国家宇航局的 Nor -den E . Huang 于 1998年首次提出的 [1], 被称为希尔伯特黄变换 (Hilber t -Huang T ransformation , 简称 HHT 。
H HT 被认为是宇航局在应用数学研究历史上最重要的发明 , 是 200年来对以傅里叶变换为基础的线性和稳态谱分析的一个重大突破[2]。
由于时间序列的信号经过 EMD, 分解成一组本征模函数 (Intrinsic M ode Function , 简称 IMF , 而不是像傅里叶变换把信号分解成正弦或余弦函数 , 因此 , HHT 既能对线性、稳态信号进行分析 , 又能对非线性、非稳态信号进行分析。
HH T 方法已用于地球物理学、生物医学、旋转机械故障诊断等领域的研究 [3-7], 并取得了较好的效果。
EMD 算法用到了耗时的三次样条插值 , 如何减少 EMD 分解的时间 , 提高算法的效率 , 研究 EM D的快速算法 , 具有重要的意义。
软件技术基础知识第一章1、算法和算法的特点2、数据结构:指相互关联的数据元素的集合。
数据结构分为逻辑结构和物理结构。
逻辑结构:表示了数据的逻辑关系(前后件关系)。
按照逻辑关系的不同分为:线形结构和非线形结构。
物理结构:表示了数据在计算机上的存放形式,也称存储结构。
按照存放形式的不同分为:顺序存储和链式存储。
3、线形结构的条件:4、线形结构通常称之为线性表。
顺序存储的线性表称为顺序表,链式存储的线性表称为线性链表。
5、对与空的数据结构可以为线性结构也可以为非线性结构。
6、顺序表和线性链表的特点。
7、栈和队列的特点。
8、栈和队列可以采用顺序存储也可以采用链式存储。
9、双向链表和循环队列。
10、树和二叉树11、二叉树的基本性质①第k层最多具有的结点数。
②深度为k的二叉树最具有的结点数。
③任何二叉树对为0的结点数和度为2的结点数的关系。
12、满二叉树的特点。
13、完全二叉树的特点。
14、二叉树的遍历15、顺序查找适用的情况。
对长度为n的线形表进行顺序查找最坏的情况需要查找的次数。
16、二分法查找适用的情况。
对长度为n的线形表进行二分法查找最坏的情况需要查找的次数。
17、排序的分类。
交换类排序:冒泡排序法,最坏的情况需要比较的次数。
插入类排序法,堆排序法。
第二章1、编程的良好习惯要求:根据需要添加相应的注释,应该有良好的视觉组织,在完成功能的前提下,优先考虑可读性和清晰性,然后在考虑效率。
2、注释的分类:序言性注释和功能性注释。
3、结构化程序设计的原则。
4、结构化程序设计的基本结构。
5、对象是属性和行为的封装体。
6、对象的基本特点:标识唯一性,分类性,多态性,封装性,摸快独立性。
7、类和实例之间的关系。
类是具有共同属性和方法对象的集合,是关于对象的抽象,一个具体的对象则称之为类的一个实例。
8、消息。
9、继承、多态性。
第三章1、软件的定义及软件的特点软件是程序、数据及相关文档的集合。
特点:2、软件危机是开软件过程中所遇到的一系列的严重问题。
常用算法设计概括地说,“算法”是指解题方案的准确而完整的描述。
对于一个问题,如果可以通过一个计算机程序,在有限的存储空间内进行有限长的时间而得到正确的结果,则称该问题是算法可解的。
但算法不等于程序,也不等于计算方法。
程序可以作为算法的一种描述,但程序通常还需考虑很多与方法和分析无关的细节问题,这是因为在编写程序时要受到计算机系统运行环境的限制。
通常,程序设计的质量不可能优于算法的设计。
通常求解一个问题可能会有多种算法可供选择,选择的主要标准是算法的正确性和可靠性,简单性和易理解性。
其次是算法所需要的存储空间少和执行更快等。
算法设计是一件非常困难的工作,经常采用的算法设计技术主要有列举法、递推法、贪婪法、回溯法、分治法、动态规划法等等。
另外,为了更简洁的形式设计和藐视算法,在算法设计时又常常采用递归技术,用递归描述算法。
1.列举法(穷举)列举法的基本思想是根据提出的问题,列举所有可能情况,并用问题中提出的条件检验哪些是需要的,哪些是不需要的。
因此,列举法常用于解决“是否存在”或“有多少种可能”等类型的问题。
例如,求解不定方程的问题可以采用列举法。
列举法的特点是算法比较简单,但当列举的可能情况较多时,执行列举算法的工作量将会很大。
因此,在用列举法设计算法时,应该重点注意使方案优化,尽量减少运算工作量。
通常,只要对实际问题作详细的分析,将与问题有关的知识条理化、完备化、系统化,从中找出规律,或对所有可能的情况进行分类,引出一些有用的信息,列举量是可以减少的。
先介绍“列举法”在易语言中实现的方法。
列举法,顾名思义是列举出所有可能的情况,并用问题的条件来一一检验,并从中找出符合要求的解。
特点比较简单,但是在写列举算法时尽量过滤掉一些不必要的情况,优化算法。
下面举一个例子,在易语言中编写代码实现,来说明列举法的基本思想,以及如何减少列举量。
大家都知道百鸡的问题吧!母鸡每只3元,公鸡每只2元,小鸡每只0.5元,计算一下如何100块钱买100只鸡。
概要设计的步骤-回复概要设计的步骤是指在软件开发过程中,对系统进行设计的初步阶段。
这个阶段主要是为了明确系统的总体结构和功能,为后续的详细设计提供指导,确保开发过程的高效性和系统的稳定性。
下面将详细介绍概要设计的步骤。
1. 确定需求:在进行概要设计之前,首先需要明确系统的需求。
这包括对系统的功能需求、性能需求、安全需求等的分析。
通过与用户和相关利益相关者的沟通,收集和整理这些需求,并编写需求规格说明书。
2. 初步架构设计:在了解系统需求后,下一步是进行初步架构设计。
这包括确定系统的主要组件和模块,定义它们之间的关系和交互方式。
同时,也需要确定系统的数据流、处理流程等。
初步架构设计的目标是为了将系统划分成逻辑上相对独立的部分,为后续的详细设计提供基础。
3. 初步界面设计:在初步架构设计的基础上,可以进行初步界面设计。
这包括确定系统的用户界面布局、交互方式、各个页面的设计等。
通过与用户进行反复讨论和调整,确保用户界面的友好性和易用性。
4. 初步数据设计:在初步架构和界面设计的基础上,需要进行初步数据设计。
这包括确定系统所需的数据库结构、数据表的设计、数据的存储方式等。
通过分析系统的功能和需求,设计出满足系统要求的数据模型。
5. 初步算法设计:在初步架构设计的基础上,需要进行初步算法设计。
这包括确定系统中各个模块的算法实现方式、数据处理方式等。
通过对系统的功能和性能要求的分析,设计出满足这些要求的算法。
6. 进行评审和修改:完成初步设计后,需要进行评审和修改。
这是一个反复迭代的过程,通过与项目成员和相关利益相关者的讨论和反馈,不断完善和优化初步设计。
这也是确保设计质量和设计符合需求的重要环节。
7. 编写概要设计文档:完成评审和修改之后,需要将概要设计的结果进行文档化。
概要设计文档主要包括需求规格说明、架构设计、界面设计、数据设计、算法设计等部分。
这些文档将作为后续详细设计的基础,也是项目验收和系统维护的重要参考资料。