全国计算机二级VFP公共基础知识笔试 联系客服

发布时间 : 星期日 文章全国计算机二级VFP公共基础知识笔试更新完毕开始阅读2450aeedb8f67c1cfad6b8c4

第八章 公共基础

全国计算机等级考试大纲要求,各种笔试除了要考70分的程序设计相关知识外,还要考30分的公共基础知识,包括基本数据结构与算法、程序设计基础、软件工程基础和数据设计基础。本章将介绍这些基础知识。

8.1 数据结构与算法 8.1.1 算法

本节重点掌握算法的基本概念和典型算法的时间复杂度。

1、基本考点 1)算法基本概念

算法:是指解题方案的准确而完整的描述。

算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。

算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。

特征包括:

(1)可行性:通过已实现的基本运算执行有限次而完成;

(2)确定性:算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性;

(3)有穷性:算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;

(4)拥有足够的情报。

算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。

算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度:指执行算法所需要的计算工作量。 一般来说,算法的工作量用其执行的基本运算次数来度量,而算法执行的基本运算次数是问题规模的函数,用O(f(n))表示。在同一个问题规模下,用平均性态和最坏情况复杂性来分析。一般情况下,用最坏情况复杂性来分析算法的时间复杂度。

算法空间复杂度是指执行这个算法所需要的内存空间。

2)查找算法

顺序查找的使用情况:

(1)线性表为无序表(不管是顺序存储结构还是链式存储结构); (2)表采用链式存储结构(即使是有序线性表)。 二分法查找只适用于顺序存储的有序表。

n

对于长度为n的有序线性表,二分查找最坏情况只需比较log2次,顺序查找需要比较n次。

3)排序算法

排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。 (1)交换类排序法: 假设线性表的长度为n

冒泡排序法:在最坏情况下,需要比较的次数为n(n-1)/2; 快速排序法:在最坏情况下,需要比较的次数为n(n-1)/2 (2)插入类排序法:

简单插入排序法,最坏情况需要n(n-1)/2次比较;

1.5

希尔排序法,最坏情况需要O(n)次比较。 (3)选择类排序法:

简单选择排序法,最坏情况需要n(n-1)/2次比较; 堆排序法,最坏情况需要O(nlog2n)次比较。

2、重要考点详解

(1)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是______。

A) 冒泡排序为n/2 B) 冒泡排序为n

C) 快速排序为n D) 快速排序为n(n-1)/2 【答案】D

【解析】在全国二级考试中涉及的排序算法(冒泡排序法、快速排序法、简单插入排序法、希尔排序法、简单选择排序、堆排序法),只有“堆” 排序和“希尔”排序不是n(n-1)/2,

n1.5

其它都是n(n-1)/2。堆排序是O(nlog2),希尔排序是O(n)。

(2)对于长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为_______。 A)log2n B) n/2 C) n D) n+1 【答案】C

【解析】最坏的情况是要找的元素在最后一个或不在序列中,所以要把n个元都比较一下。 (3)下列叙述中正确的是______。

A)对长度为n的有序链表进行查找,最坏的情况需要比较次数为n。

B)对长度为n的有链序表进行对分查找,最坏的情况需要比较次数为(n/2)。

n

C)对长度为n的有链序表进行对分查找,最坏的情况需要比较次数为(log2)。

n

D)对长度为n的有链序表进行对分查找,最坏的情况需要比较次数为(nlog2)。 【答案】A

【解析】二分查找(对分查找)只能用于顺序存储的有序表,所以只有A是对的。 (4)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为 45 。 【答案】45

【解析】n(n-1)/2=10*9/2=45

8.1.2 数据结构 1、基本考点

本节主要内容是数据结构的三要素:数据的逻辑关系、在计算机中的存储关系、与存储关系对应的运算。栈、队列的数据结构(逻辑关系、存储关系、运算)。

1)数据结构

数据结构研究的三个方面:

(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;

(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。

数据结构是指相互有关联的数据元素的集合。

数据结构是反映数据元素之间关系的数据元素集合的表示。 数据的逻辑结构包含:

(1)表示数据元素的信息;

(2)表示各数据元素之间的前后件关系。(逻辑关系,与在计算机内的存储位置无关) 一个数据结构中的各数据元素在计算机存储空间中的位置关系与逻辑关系有可能不同。 数据的存储结构是数据的逻辑结构在计算机存储空间中的存放形式。 常用的存储结构有:顺序、链接、索引等。

根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为:线性结构和非线性结构。

线性结构条件:

(1)有且只有一个根结点;

(2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。

2)线性表及其顺序存储结构

线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

如:一个N维向量、矩阵 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。

非空线性表的结构特征: 线性表:a1,a2,??an

(1)有且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件;

(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。

线性表的顺序存储结构具有以下两个基本特点:

(1)线性表中所有元素的所占的存储空间是连续的;

(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k, ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。

顺序表的运算:插入、删除。

3)栈

栈是一种特殊的线性表,是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。

栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。

栈的顺序存储: 用一维数组S(1:m)作为栈的顺序存储空间,M为栈的最大容量。S(bottom)表示栈底元素,s(top)为栈顶元素,top=0表示栈空,top=m表示栈满。

栈的基本运算:

(1)插入元素称为入栈运算;(top=top+1;将新元素插入到栈顶指针指向的位置),

会出现上溢现象。

(2)删除元素称为退栈运算;(将栈顶指针指向的元素赋给指定的变量,top=top-1),会出现下溢现象。

(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。

4)队列

队列是一种特殊的线性表,队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,Front指针指向队头。

队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。

队列的顺序存储:与栈类似,用一维数组Q(1:m)作为队列的顺序存储空间 队列运算:

(1)入队运算:从队尾插入一个元素; (2)退队运算:从队头删除一个元素。

5)循环队列

循环队列是队列是一种顺序存储结构,在循环队列结构中,当存储空间的最后一个位置已被使用而要进行入队运算时,只要存储空间的第一个位置空闲,就可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。(下图我没看懂,准备问其他老师)

从Front指针指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。

循环队列的初始状态为空: rear=front=m 当循环队列满时,rear=Front

为区别队满还是队空,增加标志S。

s=0表示队列空,s=1且front=rear表示队列满

6)线性链表

对于元素变动频繁的大线性表不宜采用顺序存储结构,而应采用链式存储结构。 在链式存储结构中,数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。

结点由两部分组成:(1)用于存储数据元素值,称为数据域;(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。