软件考试重点内容
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章算法
1.1 算法的基本概念
1.1.1 算法的基本特征
1 能行性
2 确定性
3有穷性
4拥有足够的情报
当输入不够或输入的初始条件有误时,算法是无效的。
算法:是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的、明确的,此顺序将在有限的次数(时间)下终止。
1.2 算法设计基本方法
1 列举法
根据提出的问题,举出所有可能的情况,并用问题中给出的条件检验哪些是需要的,哪些是不需要的。
2 归纳法
通过举少量的特殊情况,经过分析最后找出一般关系。
3 递推
从已知的条件出发,逐次推出所要求的各中间结果和最后结果。
4 递归
自己调用自己的过程称为递归。
5 减半递推技术
解决问题的复杂程度与问题的规模有密切的关系。通过减小问题的规模(注意保持问题的性质不变),可以将降低解决问题的复杂程度。
“减半”是指将问题的规模减半,“递推”是指重复“减半”的过程。
6 回溯法
通过对问题的分析,找出一个解决问题的线索,然后按照这个线索逐步试探。对于每一步试探,若成功就得到问题的解,失败则逐步退回,换别的线路再试探。
1.3 算法的复杂度分析
算法的复杂度主要包括时间复杂度和空间复杂度。
1.3.1 算法的时间复杂度
是指执行算法所需要的计算工作量。
两种分析算法工作量的方法
1 平均性态
2 最坏情况复杂性
1.3.2 算法的空间复杂度
是指执行这一算法所需的内存空间。
第二章基本数据结构及其运算
2.1数据结构的基本概念
数据结构作为计算机的一门科学,主要研究和讨论以下三方面的问题:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;
(2)在对数据进行处理时各数据元素在计算机中的存储关系,即数据的存储结构;
(3)对各种数据结构进行的运算。
研究数据结构的目的:提高数据处理的速度,节省数据处理过程中占用的计算机存储空间
2.1.1 什么是数据结构P16
是指相互关联的数据的集合。
一般情况下,在具有相同特征的数据元素集合中,各个数据元素之间存在某种关系,这种关系反映了该集合中数据元素所固有的一种结构。在数据处理领域中,通常把数据元素之间这种固有的关系简单地用前后件关系来描述。
1 数据的逻辑结构
所谓结构实际上是指数据元素之间的前后件关系。
一个数据结构应该包含以下两方面的信息:
(1)表示数据元素的信息:数据元素的集合D
(2)表示各数据元素之间的前后件关系:D上的关系R 2数据的存储结构
数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。在数据的存储结构中,不仅要存放各数据元素的信息,还要存放各数据元素的前后件关系的信息。
一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构,采用不同的存储结构,其数据处理的效率不同。在进行数据处理时,选择合适的存储结构是很重要的。
2.2 线性表及其顺序存储结构
2.2.1 线性表及其运算P21
1什么是线性表
线性表是由n(n>=0)个数据元素a1,a2,…an组成的一个有限序列,表中的每一个数据元素,除了第一个以外,有且只有一个前件,除了最后一个以外,有且只有一个后件。即线性表或是一个空表,或可表示为:
(a1,a2,…ai…an)
其中ai(i=1,2,…n)是属于数据对象的元素,通常也称为线性表中的一个结点。
数据元素在线性表中的位置只取决于它自己的序号,即数据元素之间
的相对位置是线性的。
非空线性表有如下一些结构特征:
(1)有且只有一个根结点a1,它无前件;
(2)有且只有一个终端结点an,它无后件;
(3)除根结点与终端结点外,其它所有结点都有且只有一个前件,也有且只有一个后件。线性表的结点的个数n称为线性表的长度。
2线性表的顺序存储结构
线性表的存储结构有以下特点:
(1)线性表中所有的元素所占的在存储空间是连续的;
(2)线性表中的各数据元素在存储空间中是按逻辑顺序依次存放的。
假设线性表中的第一个数据元素的存储地址为ADR(ai),每一个数据元素占k个字节,则线性表中的第i个元素ai在计算机存储空间中的存储地址为:
ADR(ai)=ADR(a1)+(i-1)k
在程序设计语言中,通常定义一个一维数组来表示线性表的顺序存储结构。
对线性表的运算主要有:
插入、删除、
3线性表在顺序存储下的插入运算
插入一个新元素时,首先要将从最后一个元素开始,直到第i个元素之间共n-i+1个元素,依次向后移动一个位置,第i个位置被空出,新元素插入到第i项,线性表的长度加1。
算法2-1:表V最大空间为m,现已有n个元素,在第i个元素之前插入新元素b.
C语言描述如下:
void insl(v,m,n,i,b)
T v[] ,b; int m,*n,i
{ if(*n= =m)
{printf(―overflow \n‖); return ;}
if(i>=*n) i=*n+1;
if(i<1) i=1;
for( j = *n; j>=i; j--) v[j]=v[j-1];
v[i-1]=b;
*n=*n+1;
return;
}
4. 线性表在顺序存储结构下的删除操作
算法2-2在长度为n的线性表中删除第i个元素
void del(v,m,n,i)
T *v;int m,*n,i
{
int k;
if(n==0)