资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2009 全国计算机二级公共基础知识 (全)1.1 算法考点 1 算法的基本概念 计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。算法 (algorithm) 是一组严谨地定义运算顺序的规则,并且每一个规则都是 有效的,同时是明确的; 此顺序将在有限的次数后终止。 算法是对特定问题求解 步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。1 算法的基本特征(1) 可行性 (effectiveness) :针对实际问题而设计的算法, 执行后能够得 到满意的结果。(2) 确定性 (definiteness) :算法中的每一个步骤都必须有明确的定义, 不允许有模棱两可的解释和多义性。(3) 有穷性 (finiteness) :算法必需在有限时间内做完,即算法必需能在 执行有限个步骤之后终止。(4) 拥有足够的情报:要使算法有效必需为算法提供足够的情报当算法 拥有足够的情报时, 此算法才最有效的; 而当提供的情报不够时, 算法可能无效。2 算法的基本要素(1) 算法中对数据的运算和操作:每个算法实际上是按解题要求从环境 能进行的所有操作中选择合适的操作所组成的一组指令序列。计算机可以执行的基本操作是以指令的形式描述的。 一个计算机系统能执行 的所有指令的集合, 称为该计算机系统的指令系统。 计算机程序就是按解题要求 从计算机指令系统中选择合适的指令所组成的指令序列在一般的计算机系统中, 基本的运算和操作有以下 4 类: 算术运算:主要包括加、减、乘、除等运算; 逻辑运算:主要包括“与”、“或”、“非”等运算; 关系运算:主要包括“大于”、“小于”、“等于”、“不等于”等运算; 数据传输:主要包括赋值、输入、输出等操作。(2) 算法的控制结构:一个算法的功能不仅仅取决于所选用的操作,而 且还与各操作之间的执行顺序有关。 算法中各操作之间的执行顺序称为算法的控 制结构。算法的控制结构给出了算法的基本框架, 它不仅决定了算法中各操作的执行 顺序,而且也直接反映了算法的设计是否符合结构化原则。 描述算法的工具通常 有传统流程图、 N-S 结构化流程图、 算法描述语言等。 一个算法一般都可以用顺 序、选择、循环 3 种基本控制结构组合而成。(3) 算法设计的基本方法计算机算法不同于人工处理的方法, 下面是工程上常用的几种算法设计, 在 实际应用时,各种方法之间往往存在着一定的联系。(1) 列举法列举法是计算机算法中的一个基础算法。 列举法的基本思想是, 根据提出的 问题,列举所有可能的情况, 并用问题中给定的条件检验哪些是需要的, 哪些是 不需要的。列举法的特点是算法比较简单。 但当列举的可能情况较多时, 执行列举算法 的工作量将会很大。因此,在用列举法设计算法时,使方案优化,尽量减少运算工作量,是应该重点注意的。(2) 归纳法归纳法的基本思想是, 通过列举少量的特殊情况, 经过分析, 最后找出一般 的关系。从本质上讲, 归纳就是通过观察一些简单而特殊的情况, 最后总结出一 般性的结论。(3) 递推 递推是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结 果。其中初始条件或是问题本身已经给定, 或是通过对问题的分析与化简而确定。 递推本质上也属于归纳法, 工程上许多递推关系式实际上是通过对实际问题的分 析与归纳而得到的, 因此,递推关系式往往是归纳的结果。 对于数值型的递推算 法必须要注意数值计算的稳定性问题。(4) 递归人们在解决一些复杂问题时,为了降低问题的复杂程度 (如问题的规模等 ), 一般总是将问题逐层分解, 最后归结为一些最简单的问题。 这种将问题逐层分解 的过程,实际上并没有对问题进行求解, 而只是当解决了最后那些最简单的问题 后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。递归分为直接递归与间接递归两种。(5) 减半递推技术实际问题的复杂程度往往与问题的规模有着密切的联系。 因此,利用分治法 解决这类实际问题是有效的。工程上常用的分治法是减半递推技术。所谓“减半”,是指将问题的规模减半,而问题的性质不变;所谓“递推” , 是指重复“减半”的过程(6) 回溯法在工程上,有些实际问题很难归纳出一组简单的递推公式或直观的求解步 骤,并且也不能进行无限的列举。对于这类问题,一种有效的方法是“试” 。通 过对问题的分析, 找出一个解决问题的线索, 然后沿着这个线索逐步试探, 若试 探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再逐步试探。4 算法设计的要求通常一个好的算法应达到如下目标:(I) 正确性(correct ness)正确性大体可以分为以下 4 个层次: 程序不含语法错误; 程序对于几组输入数据能够得出满足规格说明要求的结果; 程序对于精心选择的典型、 苛刻而带有刁难性的几组输入数据能够得 出满足规格说明要求的结果; 程序对于一切合法的输入数据都能产生满足规格说明要求的结果。(2) 可读性 (readabiIity)算法主要是为了方便入的阅读与交流, 其次才是其执行。 可读性好有助于用 户对算法的理解;晦涩难懂的程序易于隐藏较多错误,难以调试和修改。(3) 健壮性 (robustness)当输入数据非法时, 算法也能适当地做出反应或进行处理, 而不会产生 莫名其妙的输出结果。(4) 效率与低存储量需求效率指的是程序执行时, 对于同一个问题如果有多个算法可以解决, 执 行时间短的算法效率高;存储量需求指算法执行过程中所需要的最大存储空间考点 2 算法的复杂度1 算法的时间复杂度算法的时间复杂度, 是指执行算法所需要的计算工作量。 同一个算法用 不同的语言实现,或者用不同的编译程序进行编译, 或者在不同的计算机上运行, 效率均不同。 这表明使用绝对的时间单位衡量算法的效率是不合适的。 撇开这些 与计算机硬件、软件有关的因素, 可以认为一个特定算法 “运行工作量”的大小, 只依赖于问题的规模 (通常用整数 n 表示 ),它是问题的规模函数。即 算法的工作量 =f(n)例如,在N XN矩阵相乘的算法中,整个算法的执行时间与该基本操作(乘法)重复执行的次数n3成正比,也就是时间复杂度为 n3,即f(n)=O(n3) 在有的情况下,算法中的基本操作重复执行的次数还随问题的输入数据集不 同而不同。例如在起泡排序的算法中, 当要排序的数组 a 初始序列为自小至大有 序时,基本操作的执行次数为氏当初始序列为自大至小有序时, 基本操作的执行 次数为 n(n- 1)/2 。对这类算法的分析,可以采用以下两种方法来分析。(1) 平均性态 (Average Behavior) 所谓平均性态是指各种特定输入下的基本运算次数的加权平均值来度量算 法的工作量。设x是所有可能输入中的某个特定输入,p(x)是x出现的概率(即输入为x 的概率),t(x)是算法在输入为x时所执行的基本运算次数,则算法的平均性态定 义为 其中 Dn 表示当规模为 n 时,算法执行的所有可能输入的集合。(2) 最坏情况复杂性 (Worst-case Complexity) 所谓最坏情况分析,是指在规模为 n 时,算法所执行的基本运算的最大次 数。2 算法的空间复杂度算法的空间复杂度是指执行这个算法所需要的内存空间。 一个算法所占用的存储空间包括算法程序所占的空间、 输入的初始数据所占 的存储空间以及算法执行中所需要的额外空间。 其中额外空间包括算法程序执行 过程中的工作单元以及某种数据结构所需要的附加存储空间。 如果额外空间量相 对于问题规模来说是常数,则称该算法是原地 (in place) 工作的。在许多实际问 题中,为了减少算法所占的存储空间, 通常采用压缩存储技术, 以便尽量减少不 必要的额外空间。考点 3 数据结构的定义数据结构 (data structure) 是指相互之间存在一种或多种特定关系的数据元 素的集合,即数据的组织形式。数据结构作为计算机的一门学科,主要研究和讨论以下三个方面:(1) 数据集合中个数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2) 在对数据元素进行处理时,各数据元素在计算机中的存储关系,即 数据的存储结构;(3) 对各种数据结构进行的运算。讨论以上问题的日的是为了提高数据处理的效率, 所谓提高数据处理的效率有两个方面:(1) 提高数据处理的速度;(2) 尽量节省在数据处理过程中所占用的计算机存储空间。数据(data):是对客观事物的符号表示,在计算机科学中是指所有能输入到 计算机中并被计算机程序处理的符号的总称。数据元素 (data eIement) :是数据的基本单位, 在计算机程序中通常作为一 个整体进行考虑和处理。数据对象 (data object) :是性质相同的数据元素的集合, 是数据的一个子集。在一般情况下, 在具有相同特征的数据元素集合中, 各个数据元素之间存在 有某种关系 (即连续 ),这种关系反映了该集合中的数据元素所固有的一种结构。 在数据处理领域中,通常把数据元素之间这种固有的关系简单地用前后件关系 (或直接前驱与直接后继关系 )来描述。前后件关系是数据元素之间的一个基本关系, 但前后件关系所表示的实际意 义随具体对象的不同而不同。 一般来说, 数据元素之间的任何关系都可以用前后 件关系来描述。1 数据的逻辑结构 数据结构是指反映数据元素之间的关系的数据元素集合的表示。更通俗地 说,数据结构是指带有结构的数据元素的集合。 所谓结构实际上就是指数据元素 之间的前后件关系。一个数据结构应包含以下两方面信息:(1) 表示数据元素的信息;(2) 表示各数据元素之间的前后件关系。数据的逻辑结果是对数据元素之间的逻辑关系的描述。 它可以用数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构包括集合、线性结构、树型结构和图形结构四种。线性结构 :数据元素之间构成一种顺序的线性关系。树型结构:数据元素之间形成一种树型的关系数据的逻辑结构有两个要素: 一是数据元素的集合, 通常记为 D; 二是 D 上 的关系,它反映了数据元素之间的前后件关系,通常记为R。一个数据结构可以表示成 B= (C,R)其中B表示数据结构。为了反映D中各元素之间的前后件关系,一般用二 元组来表示。例如,复数是一种数据结构,在计算机科学中,复数可取如下定义:B=(C,R)其中,C是含有两个实数的集合 c1,c2 ;R是定义在集合C上的一种关系c1,c2,其中有序偶c1,c2表示cl是复数的实部,c2是复数的虚部。2 数据的存储结构数据的逻辑结构在计算机存储空间中的存放形式, 称为数据的存储结构 (也称为数据的物理结构) 。由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关 系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据 元素之间的前后件关系的信息。一种数据的逻辑结构根据需要可以表示成多种存储结构, 常用的结构有顺 序、链接、索引等存储结构而采用不同的存储结构, 其数据处理的效率是不同的。 因此,在进行数据处理是,选择合适的存储结构是很重要的。考点 4 数据结构的图形表示数据结构除了用二元关系表示外,还可以直观地用图形表示。在数据结构的图形表示中,对于数据集合 D 中的每一个数据元素用中间标 有元素值的方框表示, 一般称之为数据结点, 并简称为结点; 为了进一步表示各 数据元素之间的前后件关系,对于关系 R 中的每一个二元组,用一条有向线段
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号