版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1算法
1.1算法的基本概念
1.算法的概念(必记):
算法是指解题方案的准确而完整的描述。
分析:要用计算机实现某一任务时,先应设计出一整套解决问题的指导方案,然后具体实现。整套的指导
方案称之为算法,而具体的实现称之为程序。并且在设计指导方案时,可不用过多考虑到实现程序的具体细
节(即可以一点点的理想化),但在程序实现时,必须受到具体环境的约束(现实不同于理想)。
结论:算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。
2.算法的基本特征(必记):
a.可行性:由于算法总是在某个特定的计算工具上实现并执行的,因而受到计算工具的限制,所以在设计算
法时,要考虑到设计的算法是否是可行的。
b.确定性:算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。
c.有穷性:算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。
d.拥有足够的情报:算法有相应的初始数据。
3.算法的基本要素:
一个算法通常由两个基本要素所组成:一是对数据对象的运算和操作,二是算法的控制结构。
基本运算和操作分为四类:
a.算术运算:(加、减、乘、除等运算)
b.逻辑运算:(与、或、非等运算)
c.关系运算:(大于、小于、等于、不等于等运算)
d.数据传输:(赋值、输入、输出等操作)
算法的控制结构:
算法中各操作之间的执行顺序称之为算法的控制结构。一个算法一般都可以用顺序、选择、循环三种基本
控制结构组合而成。
注意:一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。
4.算法设计基本方法:
列举法、归纳法、递推、递归、减半递推技术、回溯法。
1.2算法的复杂度(必记)
算法的复杂度主要包括时间复杂度和空间复杂度o
1.算法的时间复杂度:___________
是指执行算法所需要的计算工作量,是由算法所执行的基本运算次数来度量。
可用平均性态和最坏情况两种分析方法。其中平均性态分析是指用各种特定输入下的基本运算次数的加权平
均值来度量算法的工作量;而最坏情况分析是指在所有特定输入下的基本运算次数据的最大次数。
2.算法的空间复杂度:_________________________
一个算法的空间复杂度,是指执行这个算法所需要的内存空间。包含有三部分所组成:算法程序所占的空
间
+输入的初始数据所占的存储空间+算法执行过程中所需要的额外空间。
历届的考题:
1、算法具有五个特性,以下选项中不属于算法特性的是()[2005.4]
A)有穷性B)简洁性C)可行性D)确定性
2、问题处理方案的正确而完整的描述称为_算法。[2005.4]
3、下列叙述中正确的是o[2006.9]
A)一个算法的空间复杂度大,则其时间复杂度也必定大
B)一个算法的空间复杂度大,则其时间复杂度必定小
C)一个算法的时间复杂度大,则其空间可复杂度必定小
D)上述三种说法都不对
第1页,共26页
4、算法复杂度主要包括时间复杂度和匚至圆]复杂度。[2006.9]
1.2数据结构与算法
数据结构作为计算机的一门学科,主要研究以卜.三个方面的问题:
a.数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;
b.在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;
c.对各种数据结构进行的运算。
注意:讨论以上问题主要口的是为了提高数据处理的效率。提高效率包括两个方面:•是提高数据处理的速
度,二是节省在数据处理过程中所占用的计算机存储空间。
2.1什么是数据结构
简单地说,数据结构是指相互有关联的数据元素的集合。而数据元素之间的关联通常是指其前后件关系(即
先后顺序关系),如春、夏、秋、冬之间的先后顺序关系。
因此,•个数据结构应包含以下两方面的信息:a.表示数据元素的信息;b.表示各数据元素之间的前后件关
系。
T金据的逻辑结构________________________________
所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构。注意:这种逻辑关系仅指兀素之间的固
有的一个先后顺序关系,而与它们在计算机中的存储顺序无关。
2.数据的存储结构__________________________
数据的存储结构的概念:数据的逻辑结构在计算机存储空间中的存放形式(也称数据的物理结构)。
注意:
a、数据元素在计算机中存储空间中的位置关系可以与它们的逻辑关系相同,也可以不相同。
b、数据的存储结构有顺序、链接、索引等。
c、数据元素采用不同的存储结构,其数据处理的效率是不同的。
2.2数据结构的图形表示
一般用一铝㈣标有元素值的方框表示一个数据元素;用二条看荷缱段仄前件结点指向后件结点。
:
J看....M.......‘萩.....¥""Ir..............................?T"'"
*>i>*••*i«i1•1111••iiTrart,],]♦,♦,,♦・・,♦,♦♦/
在数据结构中,没有前件的结点成为根结点(如上图中的春与父亲);没有后件的结点称为终端结点(也称为
叶子结点,如上图中的冬与儿子和女儿)。
注意:在进行处理时,一个数据结构中的元素结点可能是在动态变化的。这种变化可能是元素结点的个数
发生变化,也可以是元素结点的先后顺序发生变化。
2.3线性结构与非线性结构
空的数据结构是:一个数据元素都没有的数据结构。
根据数据结构中各数据元素之间前后件关系的复杂程度,可将数据结构分为二大类:线性结构和非线性结构。
一个非空的数据结构满足下列两个条件,则为线性结构,线性结构又称为线性表。
a.有且只有一个根结点;b.每一个结点最多有一个前件,也最多有一个后件。
在上图中,左边的是线性结构,而右边的是非线性结构。
注意:线性结构与非线性结构都可以是空的数据结构。•个空的数据结构究竟属于线性结构还是属于非线性
结构,要根据具体情况来确定。如果对该数据结构的运算是按线性结构的规则来处理的,则属于线性结构;否
则属于非线性结构。
历届的考题:
1、数据的存储结构是指(____)[2005.4]
A)存储在外存中的数据2、下列叙述中正确的是()[2005.9]
C)数据在计算机中的顺序存储方式
B)数据所占的存储空间量D)数据的逻辑结构中计算机中的表示
A)一个逻辑数据结构只能有一种存储结构
第2页,共26页
B)数据的逻辑结构属于线性结构,存储结构属于非线性结构
C)•个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
1.3线性表及其顺序存储结构
3.1线性表的基本概念
非空线性表的结构特征如下:
a.有且只有一个根结点,它无前件;b.有且只有一个终端结点,它无后
件;……除根结点与终端结点外,其存储地址内存状态
他所有地点看H竟有二个啬秤丁也着直耳宥一个后件。
春夏秋冬ADR(ai)al占k个字节
线性表中结点的个数n称为线性表的长度。当n=0时,称为空表。ADR(a[)+ka2占k个字节
3.2线性表的顺序存储结构
•*
线性表的顺序存储结构具有以下两个基本特点:
ADRCap+(i-l)kai占k个字节
a.线性表中所有元素所占的存储空间是连续的:
b.线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。:•
注意:在线性表的顺序存储结构中,其前后件两个元素在存储空间吸损镯骅0-说前件元素L定至题管节
素的前面。.~
在线性表的顺序存储结构中,如第一个元素的地址为ADR(al),每个元素占用的存储空间+小4k小字节,
则线衽袤市第T不元素而荐襦施证期:党I…
[_:~r_^;~
秋冬
3.3顺序表的插入运算
在线性表的顺序存储结构中,当插入元素时,插入点后的元素都要向后移动一位,以让出一个存储空间。
在平均情况下,要在线性表中插入一个新元素,需要移动表中一半的元素。因此,在线性表顺序存储的情况
下,要插入一个新元素,其效率是很低的。
3.4顺序表的删除运算
在线性表的顺序存储结构中,当删除元素时,删除点后的元素都要向前移动一位,以保证元素都是相邻存储的。在平均
情况下,要在线性表中删除一个元素,需要移动表中一半的元素。因此,在线性表顺序存储的情况下,要
删除一个元素,其效率是很低的。
1.4栈和队列
4.1栈及其基本运算
1.什么是栈
栈是一种特殊的线性表。栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允
许插入与删除的一端称砥底。
栈按照"先进后出"(FILO)或"后进先出"(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用botton
表示栈底。
第3页,共26页
2.栈的顺序存储及其运算
栈的基本运算有三种:.入栈运算、退栈运算和.读栈顶元素。
4.2队列及其基本运算旧r
1.什么是队火丁/
:列入、川绛的产)竿q允许插入的一端称为队尾,允许删除
豳/忐说去呆中/i脸棒事^山4曲)的线上蓑Q四厢'来先服务"的原则。
往电放痛)说插入4元矍标为由心篁K队列的排/赃•多羌素森阳退队运算。
2.循环队列发窕哪
所谓循环队嫄)鼬将队平存储空间相餐舲牛位罩绕到獭出跳核置,形成逻辑上的环状空间,供队列循环
使南。
队列空和队列满的条件如下:
队列空的条件为s=0;
队列满的条件为s=l且front=rear.
循环队列主要有两种基本运算:入队运算和退队运算。
a.入队运算:在循环队列的队尾加入一个新元素,首先将队尾指针进一(即rear=rear+l),并当rea『m+l时置
rear=l;然后将新元素插入到队尾指针指向的位置。
注意:当循环队列非空(s=l)且队尾指针等于排头指针时,说明循环队列已满,不能进行入队运算,这种情
况称为"上溢"。
b.退队运算:指在循环队列的排头位置退出一个元素并赋给指定的变量。首先将排头指针进一C)
front=front+l),并当front=m+l时置front=l;然后将排头指针指向的元素赋给指定的变量。栈是
注意:当循环队列为空(s=0)时,不能进行退队运算,这种情况称为"下溢"。特殊
历届的考题:的线
性
1、下列关于栈的描述中错误的是()[2005.4]表,
A)栈是先进后出的线性表B)栈只能顺序存储—只能
C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针在一
2、按照"后进先出"原则组织数据的数据结构是()[2006.4]端插
A)队列B)栈C)双向链表D)二叉树入或
删除
3、列关于栈的描述正确的是()[2005.9]
元素
A)在栈中只能插入元素而不能删除元素
D)
B)在栈中只能删除元素而不能插入元素
特殊的线性表,只能在一端插入元素,而在另一端删除元素(即
第4页,共26页
4、数据结构分为逻辑结构和存储结构,循环队列属于逻辑结构。[2005.9]
5、按“先进后出”原则组织数据的数据结构是»[2006.9]
1.5线性链表
5.1线性链表的基本概念
1.链式存储
在顺序存储方式中所有的数据元素在内存中是相邻存放的,从而造成了在插入与删除数据元素时,需要大
旦
里
移动相应的数据元素。为了解决这种问题,可以将每个数据元素存储在内存中不相邻的不同位置,并利用上一
数据元素在存有数据的同时,也存放下一个数据元素所在的位置地址(称为一个存储单元,即结点),以便查找。
这就是链式存储方式7
在链式存储方工pLgy个㈣I由两部分组成:一巴叫存放数据元素值,称为数据域;另一部分用
句占3大用俨期或3J个结点(即前件或后件)。
存放地址
注意:a、在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的
头结点开始结点终端结点
headaia2...anA
逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
b、链式存储方式既可以用于表示线性结构,也可以用于表示非线性结构。在用链式结构表示较复杂的非
向后一个结点,则称之为双向链表。
头结点开始结点终端结点
dheadaia2...anA
3.带链的栈:栈的链式存储结构称为带链的栈。
4.带链的队列:队列的链式存储结构称为带链的队列。
5.2线性链表的基本运算:查找、插入、删除。
历届的考题:
1、下列对于线性链表的描述中正确的是()[2005.4]
A)存储空间不一定是连续,且各元素的存储顺序是任意的
B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C)存储空间必须连续,且前件元素一定存储在后件元素的前面
D)存储空间必须连续,且各元素的存储顺序是任意的
2、下列叙述中正确的是()[2006.4]
A)线性链表是线性表的链式存储结构B)栈与队列是非线性结构
C)双向链表是非线性结构D)只有根结点的二叉树是线性结构
3、数据结构分为线性结构和非线性结构,带链的队列属于—»[2006.9]
1.6树与二叉树
6.1树的基本概念
树是一种简单的非线性结构,所有元素之间具有明显的层次特性。
a.在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有•个,称为树的根结点,简称
为树的根。
b.在树结构中,一个结点所拥有的后件个数称为该结点的度;在树中,所有结点中的最大的度称为树的度。
c.树具有明显的层次关系,即树是一种层次结构。
d.数的最大层次称为树的深度。
第5页,共26页
在树中v-吐子结点没有子树,②③
如左图中,567
1、A为根结点;
O2、E、F、J、H、K、L、
①M为叶子结点。
3、树中A、I都有3个子
O结点,故树的度为3。
KLM4,整个树中,总共分为4
圾”一故树的深度为.4
树形表示法
6.2二叉树及其基本性质二叉树
1.什么是二叉树:
二叉树是一种很有用的非线性结构。
二叉树具有以下两个特点:
a.非空二叉树只有一个根结点;
b.每一个结点最多有两棵子树,且分别称为该结点的左子树与右子
由以上特点司电I荀T茬三支树币7盘幽个结点的度最大为2。
2.二叉树励基本性质:例要)第2层
a.奇二叉幡的第检层上•最多存-写版>=1)个结点。
b.深度为m的]叉树最多有2ml个结点。深度为m的二叉树是指二叉树共有m层。
断**谦**”飒一厂的舞熬碑叶子结点)总是比深度为2的结点多—公。
|d.具有n个结点的二叉树,其深度至少为|[10的+1,其中[10的表示取log?n的整数也分。
,、第四层中,最多有24,=23=8个结点j
鼠、树的深度为4,最多有2U=16-1=15I个
B,,,:
\结点。
.七.、一度为…。…的结点有—8.企,……度为2…的.殖点有7
个。
3.满二叉树与完全二叉树
满二叉树与完全二叉树是两种特殊形态的二,。
a.满二叉树:⑥后一层外,每一层上的所看室点都有两个子结点。邈*说,在满二叉树中,每一层上的
结点数都留最大值,喉满二叉树的®忘上有2k-l—点,耳叠度厚唾[叉树有2m-l个结点。
b.完全9树:除点L层外,每的结点数均遇最大@上最后一意颤缺少右边的若干结点。
阊制能…完\"不是树。••
具有n个结点的完全二叉树的深度为log.]+1。
完全二叉树满二叉树非满:叉树
6.3二叉树的存储结构
在计算机中,二叉树通常采用链式存储结构。
6.4二叉树的遍历:(重要)
在先左后右的原则F,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历、后序遍
第6页,共26页
历。
a.前序遍历:首先访问根结点,然后遍历左子树,最后遍历右子树。
b.41序遍历:首先遍历左子树,然后访问根结点,最后遍历右子树。
B5H8P93B7H9PB2H5P6
前序:FCADBEGHP中序:ACBDFEHGP后序:ABDCHPGEF
注意:在树结构中,每一个结点都代表一棵子树。前序遍历中一定以根结点开头,后序遍历一定以根结点结尾,
A)ACBDFEGB)ACBDFGEC)ABDCGEFD)FCADBEG
3、对如下图2所示二叉树,进行后序遍历的结果为()[2006.4]
A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA
4、某二叉树中,度为2的结点有18个,则该二叉树中有一个叶子结点。[2005.4]
5、一棵二叉树第六层(根结点为第一层)的结点数最多为一个。[2005.9]
1.7查找技术
7.1顺序查找:
顺序查找的方法是:用被查元素与线性表中的元素逐一比较,直到找出相等的元素,则查找成功;或者找
遍
所有元素都不相等,则查找失败。
顺序查找的优点:对线性表的元素的逻辑次序无要求(不必对元素进行排序),对线性表的存储结
构无要求(顺
序存储、链接存储皆可)。
顺序查找的效率很低,但在以下情况下,只能采用顺序查找:
a.如果线性表为无序表,则不管是顺序存储结构还是链式存储结构,都只能用顺序查找。
b.即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。
7.2二分法查找:
第7页,共26页
二分法查找是一种效率较高的线性表查找方法。要进行二分法查找,则线性表结点必须是排好序的,且线
性
表以顺序方式存储。
二分法杏找的方法:首先用要查找的元素值与线性表中间位置的元素值相比较,这个中间结点把线性表分成
了两个子表,比较相等则查找完成,不等则根据比较结果确定下一步的查找应在哪一个子表中进行,如此进行
下
去,直到找到满足条件的结点,或者确定表中没有这样的结点。
对于二分法查找的缺点是线性表排序需花费时间,顺序方式存储的插入、删除不便。
注意:对于长度为n的有序线性表,在最坏的情况下,二分杳找只需要比较比较「lo/n]次,而顺序杳找
要比较n次。二分杳找的效率要比顺序杳找高得多。
历届的考题:
1、在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为()[2006.9]
A)63B)64C)6D)7
2、下列数据结构中,能用二分法进行查找的是()[2005.9]
A)顺序存储的有序线性表B)线性链表
C)二叉链表D)有序线性链表
3、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()[2005.4]
A)log2nB)n/2C)nD)n+1
1.8排序技术(记住每种排序的比较次数)
排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。
8.1交换类排序法
交换类排序的基本思想:两两比较待排序线性表的元素值,并对不满足顺序要求的元素进行位置交换,直到全
部满足为止.
1、冒泡排序法
将相邻的元素进行两两比较,若为逆序则进行交换。将线性表照此方法从头到尾处理一遍称作一趟起泡,
趟起泡的效果是将元素值最大的记录交换到了最后的位置,即该线性表的最终位置。若某一趟起泡过程中没有
发
生任何交换,则排序过程结束。
在最坏情况下,需要的比较N(N-l)/2次。
2、快速排序法
快速排序又称分区交换排序,是对冒泡排序的一种改进。其基本方法是:在待排序线性表中任取一个元素,
以它为基准用交换的方法将所
有的元素分成两部分,元素值比它小的在一个部分,元素值比它大的在另一个部分。再分别对两个部分实施上
述
过程,一直重复到排序完成。
在最坏的情况下与冒泡排序相当,然而快速排序的平均执行时间为O(nlog.)。
8.2插入类排序法
插入排序的基本思想是:每步将一个待排序元素按其元素值的大小插入到前面已排序的元素中的适当位置
上,直到全部记录插入完为止。
1、简单插入排序
它是指将无序序列中的各元素依次插入到已经有序的线性表中。
在最坏情况下比较需要N(N-l)/2次。
2、希尔排序法
希尔排序的基本思想是把元素按下标的一定增量分组,对每组元素使用插入排序,随增量的逐渐减小,所
分
成的组包含的记录越来越多,到增量的值减小到1时,整个数据合成一组,构成一组有序元素,故其属于插入
排
序方法。
在最坏情况下需要的比较0(n«)次。
8.3选择类排序法
选择排序的基本思想是:每次从待排序的元素中选出元素值最小(或最大)的记录,顺序放在已排序的记
录
第8页,共26页
序列的最后,直到全部排完。
1、简单选择排序
对线性表进行n-1趟扫描,第i趟扫描从剩下的n-i+1个记录中选出元素值最小的记录,与第i个记录交
换。
最坏情况卜需要比较N(N-l)/2次。
2、堆排序
堆排序的基本思想是:对待排序的线性表,首先把它们按堆的定义排成一个序列(称为建堆),这就找到了
最小的元素,然后将最小的元素取出,用剩下的元素再建堆,便得到次最小的的元素,如此反复进行,直到将全
部元素排好序为止。
在最坏怀况下需要比较O(nlogm)次。
甚函I襄而工最彳n7金最坯收直况皿世故此次数」
代”.・交换类排序法....;4・E“・日•泡排届,法二-----
豺「快速排序法fG"丹jii
纷;…插入类排序'法....0•丁简•单插大书午序7方二T)72・
―希尔寸土力疗法「©(nia)
“5v・・箱•单排序*乱•械0d.y2.・・“・
3、选择类排序法
6、堆排序法:O(nlog2n)
历届的考题:
1、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是(_)[2005.4]
A)冒泡排序为n/2B)冒泡排序为nC)快速排序为nD)快速排序为n(n-l)/2
2、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为O[2006.4]
定义:是指解题方案的准确而完整的描述
特征:是可行性、确定性、有穷性和拥有足够
的情报
复杂度:包括时间复杂度和空间复蕊
线性结构顺序存储:栈与队列
数据的逻辑结构
链式存储:链表、双向
非线性结构
链表、带链的栈、带链
的队列
顺序存储
数据的存储结构
链式存储
排序:交换类、插入类和选择类
数据的运算
查找:顺序查找、二分查找
插入与删除
1.9精典模拟题
—.选择题
1.算法的时间复杂度是指<
A.执行算法程序所需要的时间B.算法程序的长度
C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数
2.算法的空间复杂度是指o
A.算法程序的长度B.算法程序中的指令条数
第9页,共26页
C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间
3.下面叙述正确的是。
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上三种描述都不对
4.在计算机中,算法是指。
A.查询方法B.加工方法
C.解题方案的准确而完整的描述D.排序方法
5.算法一般都可以用哪几种控制结构组合而成
A.循环、分支、递归B.顺序、循环、嵌套
C.循环、递归、选择D.顺序、选择、循环
6.算法分析的目的是o(D)
A.找出数据结构的合理性B.找出算法中输入和输出之间的关系
C.分析算法的易懂性和可靠性D.分析算法的效率以求改进
7.下列列关于算法的叙述中,正确的是。
A.算法是解决问题的实现程序B.算法是解决问题的计算方法
C.程序的实现可以优于算法的设计
D.算法的基本特征是可行性、确定性、有穷性和拥有足够的情报。
8.下列叙述中正确的是
A)线性表是线性结构B)栈与队列是非线性结构
C)线性链表是非线性结构D)二叉树是线性结构
9.数据的存储结构是指。
A)数据所占的存储空间量B)数据的逻辑结构在计算机中的表示
C)数据在计算机中的顺序存储方式D)存储在外存中的数据
10.下列关于队列的叙述中正确的是。
A)在队列中只能插入数据B)在队列中只能删除数据
C)队列是先进先出的线性表D)队列是先进后出的线性表
11.下列关于栈的叙述中正确的是。
A)在栈中只能插入数据B)在栈中只能删除数据
C)栈是先进先出的线性表D)栈是先进后出的线性表
12.以下数据结构中不属于线性数据结构的是。
A.队列B.线性表C.二叉树D.栈
13.数据的存储结构是指o
A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示
C.数据在计算机中的顺序存储方式D.存储在外存中的数据
14.栈和队列的共同点是。
A.都是先进后出B.都是先进先出
C.只允许在端点处插入和删除元素D.没有共同点
15.用链表表示线性表的优点是o
A.便于插入和删除操作B.数据元素的物理顺序与逻辑顺序相同
C.花费的存储空间较顺序存储少D.便于随机存取
16.链表不具有的特点是»
A)不必事先估计存储空间B)可随机访问任一元素
C)插入删除不需要移动元素D)所需空间与线性表长度成正比
17.如果进栈序列为el,e2,e3,e4,则可能的出栈序列是。
A)e3,el,e4,e2B)e2,e4,e3,elC)e3,e4,el,e2D)任意顺序
18.设有下列二叉树:
第10页,共26页
对此二叉树中序遍历的结果为。
A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA
19.在深度为5的满二叉树中,叶子结点的个数为o
A)32B)31C)16D)15
20.设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T树中叶子结点数为
A)8B)7C)6D)5
21.在一•棵二叉树上第5层的结点数最多是o
A.8B.16C.32D.15
22.设一•棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为o
A.349B.350C.255D.351
23.在深度为5的满二叉树中,结点的个数为o
A.32B.31C.16D.15
24.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是。
A.cedbaB.acbedC.decabD.deabc
25.已知二叉树前序遍历序列deabc,是后序遍历序列是dabec,中序遍历序列是。
A)debacB)decabC)deabcD)cedba
26.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为
A)GEDHFBCAB)DGEBHFCAC)ABCDEFGHD)ACBFEDHG
27.树是结点的集合,它的根结点数目是o
A)有且只有1B)1或多于1C)0或1D)至少2
28.线性表若采用链式存储结构时•,要求内存中可用存储单元的地址。
A)必须是连续的B)部分地址必须是连续的
C)一定是不连续的D)连续不连续都可以
29.下列叙述中,错误的是。
A)数据的存储结构与数据处理的效率密切相关
B)数据的存储结构与数据处理的效率无关
C)数据的存储结构在计算机中所占的空间不一定是连续的
D)一种数据的逻辑结构可以有多种存储结构
30.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是。
A)冒泡排序为n/2B)冒泡排序为nC)快速排序为nD)快速排序为n(n-l)/2
正确答案:
1-5:C、D、C、C、D6-10:D、D、A、B、C11-15:D、C、B、C、A
16-20:B、B、B、C、A21-25:B、B、B、D、A26-30:B、A、D、B、D
二.填空题
1.在计算机中,算法是指解题方案的准确而完整的描述
2.算法的时间复杂度是指算法执行过程中所需要的基本运算次数
3.算法的空间复杂度是指执行过程中所需要的存储空间
4.算法分析的目的是分析算法的效率以求改进
5.算法的基本特征是而性、福耐性、宇丽和拥有足够的情报。
6.算法的复杂度主要包括时间复杂度和空间复杂度。
7.一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。
8.栈的基本运算有三种:入栈、退栈和读栈顶元素。
9.队列主要有两种基本运算:入队运算与退队运算。
第11页,共26页
10.数据结构包括数据的逻辑结构、数据的存储结构以及对数据的操作运算。
11.数据的逻辑结构在计算机存储空间中的存放形式称避据的存储结构或物理结构。
12.顺序存储方法是把逻辑上相邻的结点存储在物理位麻■邻的存储单元中。
13.在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有个元素。
14.设一棵完全二叉树共有700个结点,则在该二叉树中有个叶子结点。
15.设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为
16.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序通丽后序
遍历。
17.在最坏的情况下,冒泡排序的时间复杂度为
18.在最坏情况下,堆排序需要比较的次数为。
19.在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为o
20.对于输入为N个数进行快速排序算法的平均时间复杂度是。
2程序设计基础
2.1程序设计设计方法和风格
程序的整体风格应该强调简单和清晰,程序必须是可以理解的。
著名的“清晰第一,效率第二''的论点已成为当今主导的程序设计风格。
要形成良好的程序设计风格,主要应注重和考虑以下因素:
1、源程序文档化2、数据说明的方法
3、.语句的结构4、输入和输出
2.2结构化程序设计
2.2.1结构化程序设计的原则
结构化程序设计方法的主要原则包括:(重要)
1.自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始
就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。
2.逐步求精:对复杂问题,应设计一些子目标作过渡,逐步细化。
3.模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目
标,再进一步分解为具体的小目标,把每个小目标称为模块。
4.限制使用goto语句
2.2.2结构化程序的基本结构与特点
结构化程序的基本结构为顺序结构、选择结构和重复结构三种。
2.3面向对象的程序设计
2.3.1关于面向对象方法
面向对象方法的优点:(重要)
1与人类习怪的思维方法一致2稳定性好3可重用性好
4易于开发大型软件产品5可维护性好
2.3.2面向对象方法的基本概念:用辩证唯物的认识论来认识世界。
1.对象:
对象是面向对象方法中最基本的概念,可以用来表示客观世界中的任何实体,对象是实体的抽象。
面向对象的程序设计方法中的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由
一组表示其静态特征的属性和它可执行的一组操作组成。
对象的基本特征如下:
a.标识惟一性:可通过内在本质来区分。
b.分类性:可以将具有相同属性和操作的对象抽象成类。
第12页,共26页
C.多态性:指同一个操作可以是不同对象的行为。
d.封装性:从外面不能直接使用对象的处理能力,也不能直接修改内部状态,对象的内部状态只能由其自身
改变。
e.模块独立性好。
2.类和实例
将属性、操作相似的对象归为类。类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,它
描述了属于该对象类型的所有对象的性质。而一个对象则是其对应类的一个实例。
3.消息:
对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息”。消息是一个实例与另一个实例之
间传递的信息。
4.继承:
继承是指能够直接获得已有的性质和特征,而不必重复定义他们。继承是使用已有的类定义作为基础建立新
类的定义技术,以使新类自动拥有旧类的所有特征。
5.多态性:
多态性是指同样的消息被不同的对象接受时可导致完全不同的行动的现象。
历届的考题:
1、下列选项不符合良好程序设计风格的是。[2006.9]
A)源程序要文档化B)数据说明的次序要规范化
C)避免滥用goto语句D)模块设主地要保证高耦合、高内聚
2、下列选项中不属于结构化程序设计方法的是()[2006.4]
A)自顶向下B)逐步求精
C)模块化D)可复用
3、在面向对象的方法中,类的实例称为o[2005.4]
4、在面向对象方法中,描述的是具有相似属性与操作的一组对象。[2006.4]
2.4精典模拟题
选择题
1.结构化程序设计主要强调的是
A)程序的规模B)程序的易读性
C)程序的执行效率D)程序的可移植性
2.对建立良好的程序设计风格,下列描述正确的是
A)程序应简单、清晰、可读性好B)符号名的命名只要符合语法
C)充分考虑程序的执行效率D)程序的注释可有可无
3.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送
A)调用语句B)命令C)口令D)消息
4.信息隐蔽的概念与下述哪一种概念直接相关?
A)软件结构定义B)模块独立性
C)模块类型划分D)模块耦合度
5.下面对对象概念描述错误的是
A)任何对象都必须有继承性B)对象是属性和方法的封装体
C)对象间的通讯靠消息传递D)操作是对象的动态属性
6.下面描述中,符合结构化程序设计风格的是o
A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B.模块只有一个入口,可以有多个出口
C.注重提高程序的执行效率D.不使用goto语句
7.下面概念中,不属于面向对象方法的是(D)
第13页,共26页
A.对象B.继承C.类D.过程调用
8.面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是。
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
9.在设计程序时,应采纳的原则之一是o
A.程序结构应有助于读者理解B.不限制goto语句的使用
C,减少或取消注解行D.程序越短越好
10.结构化程序设计的3种结构是。
A)顺序结构、选择结构、转移结构B)分支结构、等价结构、循环结构
C)多分支结构、赋值结构、等价结构D)顺序结构、选择结构、循环结构
正确答案:1-5:B、A、D、B、A6-10:A、D、C、A,D
二.填空题
1.结构化程序设计的三种基本逻辑结构为顺序、选择和
2.源程序文档化要求程序应加注释。注释一般分为序言性注释和
3.在面向对象方法中,信息隐蔽是通过对象的性来实现的。
4.类是一个支持集成的抽象数据类型,而对象是类的
5.在面向对象方法中,类之间共享属性和操作的机制称为
6.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精T醺段化和限制使用got。语句。
7.面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的二不实体。
8.一个类可以从直接或间接的祖先中继承所臂性和方法。采用这个方法提高了软件的可重用性。
9.面向对象的模型中,最基本的概念是对象和美。
10.在面向对象的程序设计中,类描述的是具有相似性质的一组o
3软件工程基础
3.1.1软件定义与软件特点
计算机软件:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完与集合。
软件的特点:
a,软件是一种逻辑实体,不是物理实体,具有抽象性;
b.软件的生产与硬件不同,它没有明显的制作过程;
c.软件在运行、使用期间不存在磨损、老化问题;
d.软件的开发、运行对计算机系统有依赖性,受计算机系统的限制,这导致软件移植的问题。
e.软件复杂性高,成本昂贵;
f.软件开发涉及诸多的社会因素。
3.1.2软件危机与软件工程
软件危机归结为成为、质量、生产率等问题。
软件工程的主要思想是强调在软件开发过程中需要应用工程化原则,即将软件产品看作是一个工程产品来处
理。
软件工程包括3个要素,即方法、工具和过程。
3.1.3软件工程过程与软件生命周期:(重要)
1、软件工程过程包含4种基本活动:
a.P(Plan)-软件规格说明。规定软件的功能及其运行时的限制。
b.D(Do)—软件开发。产生满足规格说明的软件。
c.C(Check)—软件确认。确认软件能够满足客户提出的要求。
d.A(Action)—软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。
2、软件生命周期:
软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。其中软件定义阶段包含有:可行性研究、
第14页,共26页
需求分析两步;软件开发阶段包含有:概要设计、详细设计、实现和测试;软件运行维护阶段包含有:使用、维
护和退役。
3.1.4软件工程的目标与原则
1.软件工程的目标
软件工程的目标是:考试出现时,只要是达到用最小的人力、物力、财力和时间而得到最好质时产品的
都是。
基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。
2.软件工程的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年美容产品公司购销简单合同
- 装修合同注意事项2024年
- 港口与航道工程承包合同
- 安全生产管理合同范本
- 车辆租赁合同样本
- 牙科护士配合根管治疗
- 12盘古开天地 公开课一等奖创新教学设计-1
- 创商培训与测评
- 年产xxx马赛克陶瓷原料项目可行性研究报告(创业计划)
- 年产xxx灭火器项目建议书
- 高级护理实践智慧树知到期末考试答案章节答案2024年浙江中医药大学
- MOOC 跨文化交际通识通论-扬州大学 中国大学慕课答案
- 10000中国普通人名大全
- 六年级人教版《圆》试卷分析
- 建筑工程项目施工企业总包单位考察评价表模板
- FX挑战题梯形图实例
- 体育特色学校建设方案
- 快递员管理制度
- 五年级品德与社会远离危险地带PPT学习教案
- 血管麻痹综合征(刘德昭)
- 过程装备与控制工程毕业论文
评论
0/150
提交评论