全国计算机等级考试辅导讲义
二级公共基础知识 第一章 数据结构与算法
1.1 算法
1、算法是指解题方案的准确而完整的描述。
*:算法不等于程序,也不等于计算方法。程序的编制不可能优于算法的设计。 2、算法的基本特征
(1)可行性:针对实际问题而设计的算法,执行后能够得到满意的结果。
(2)确定性:每一条指令的含义明确,无二义性。并且在任何条件下,算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出。
(3)有穷性:算法必须在有限的时间内完成。有两重含义,一是算法中的操作步骤为有限个,二是每个步骤都能在有限时间内完成。
(4)拥有足够的情报:算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。因此,一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。当输入不够或输入错误时,算法将无法执行或执行有错。
1
一般说来,当算法拥有足够的情报时,此算法才是有效的;而当提供的情报不够时,算法可能无效。
*:综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
3、算法的基本要素:一是对数据对象的运算和操作,二是算法的控制结构。
基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构,包括:顺序结构、选择结构、循环结构。 算法设计基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。
4、算法复杂度主要包括时间复杂度和空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量,可以用执行算法的过程中所需基本运算的执行次数来度量。 算法空间复杂度是指执行这个算法所需要的内存空间。 真题讲解:2005年4月填空题第5题,2005年9月填空题第2题,2006年9月选择题第7题。 1.2 数据结构的基本概念
1、数据结构是指相互有关联的数据元素的集合。
2
2、数据结构主要研究和讨论以下三个方面的问题: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构。
(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。 (3)对各种数据结构进行的运算。
数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。 数据的存储结构有顺序、链接、索引等。
*:数据的逻辑结构反映数据元素之间的逻辑关系,数据的存储结构是数据的逻辑结构在计算机存储空间中的存放形式。同一种逻辑结构的数据可以采用不同的存储结构,但影响数据处理效率。 3、数据结构的图形表示
一个数据结构除了用二元关系表示外,还可以直观地用图形表示。在数据结构的图形表示中,对于数据集合D中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,并简称为结点;为了进一步表示各数据元素之间的前后件关系,对于关系R中的每一个二元组,用一条有向线段从前件结点指向后件结点。
4、数据结构分为两大类型:线性结构和非线性结构。
3
线性结构(非空的数据结构)条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
常见的线性结构有线性表、栈、队列和线性链表等;常用的非线性结构有树、二叉树和图等。 真题讲解:2005年9月选择题第4题。 1.3 线性表及其顺序存储结构
1、线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
2、线性表的顺序存储结构具有两个基本特点:(1)线性表中所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 3、顺序表的插入、删除运算
(1)顺序表的插入运算:在一般情况下,要在第i(1≤i≤n)个元素之前插入一个新元素时,首先要从最后一个(即第n个)元素开始,直到第i个元素之间共n-i+1个元素依次向后移动一个位置,移动结束后,第i个位置就被空出,然后将新元素插入到第i项。插入结束后,线性表的长度就增加了1。
*:顺性表的插入运算时需要移动元素,在等概率情况下,平均需要移动n/2个元素。
4
(2)顺序表的删除运算:在一般情况下,要删除第i(1≤i≤n)个元素时,则要从第i+1个元素开始,直到第n个元素之间共n-i个元素依次向前移动一个位置。删除结束后,线性表的长度就减小了1。
*:进行顺性表的删除运算时也需要移动元素,在等概率情况下,平均需要移动(n-1)/2个元素。 1.4 栈和队列 1、栈及其基本运算
栈是限定在一端进行插入与删除运算的线性表。
在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,栈底元素总是最先被插入的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。 栈具有记忆作用。
栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。
真题讲解:2005年4月选择题第2题,2005年9月选择题第3题,2006年4月选择题第4题,2006年9月填空题第4题。
2、队列及其基本运算
5