第11章自学辅助讲义1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2012年3月全国二级公共基础内部教程(2012年3月打印版)当前版本:2012-03-01-4-第1章算法与数据结构算法的基本概念1、算法:是指解题方案的准确而完整的描述。(1)算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。程序也可以作为算法的一种描述,但程序通常还要考虑程序运行时的环境限制等。(2)算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。2、算法的基本特征:(1)可行性,例如10+1-10的问题(2)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性;例在特殊情况时,数学公式是正确的,但计算机就是无法操作。(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义。例如1/3的无理数问题。(4)拥有足够的情报。所有的各种可能情况都要考虑到。3、一个算法的优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。(1)算法的时间复杂度是指执行算法所需要的计算工作量,可以执行算法的过程中所需要的基本运算的执行次数来度量。分析算法工作量的方法有:平均性态分析、最坏情况分析。(2)算法的空间复杂度是指执行这个算法所需要的内存空间。主要包括:算法程序所占的空间;输入的初始数据所占的空间;算法执行过程中所需要的额外空间。真题分析【真题1】算法的有穷性是指________。A)算法程序的长度是有限的B)算法只能被有限的用户使用C)算法程序的运行时间是有限的D)算法程序所处理的数据量是有限的解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。答案:C【真题2】问题处理方案的正确而完整的描述称为__【5】__。(2005年4月)解析:算法是问题处理方案正确而完整的描述。-5-答案:算法【真题3】算法的空间复杂度是指________。(2009年9月)A)算法程序中的语句或指令条数B)算法在执行过程中所需要的临时工作单元数C)算法在执行过程中所需要的计算机内部存储空间D)算法所处理的数据量解析:算法的空间复杂度是指执行这个算法所需要的计算机内部存储空间(简称内存空间)。答案:C【真题4】下列叙述中正确的是________。(2007年3月)A)数据的逻辑结构与存储结构是一一对应的B)算法的时间复杂度与空间复杂度一定相关C)算法的效率只与问题的规模有关,而与数据的存储结构无关D)算法的时间复杂度是指执行算法所需要的计算工作量解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的;数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。答案:D【真题5】下列叙述中正确的是________。(2006年9月)A)一个算法的时间复杂度大,则其空间复杂度必定小B)三种说法都不对C)一个算法的空间复杂度大,则其时间复杂度也必定大D)一个算法的空间复杂度大,则其时间复杂度必定小解析:1、时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。2、人们都希望选择一个既省存储空间、又节省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。答案:B【真题6】算法复杂度主要包括时间复杂度和__【2】__复杂度。(2005年9月)-6-解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间规模。答案:空间【真题7】算法的时间复杂度是指________。(2010年3月)A)算法程序中的语句或指令条数B)算法在执行过程中所需要的基本运算次数C)算法的执行时间D)算法所处理的数据量解析:算法复杂度包括时间复杂度和空间复杂度,是衡量一个算法好坏的度量。算法的时间复杂度主要是基本运算次数。答案:BPoint2:数据结构的定义出题趋势1、数据结构:是指相互有关联的数据元素的集合。(1)数据结构研究以下三个方面的问题:①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;③对各种数据结构进行的运算。研究以上问题的主要目的是为了提高数据处理的效率(一是提高数据处理的速度,二是节省数据处理过程所占的空间。)(2)数据的逻辑结构反映数据元素之间的逻辑关系,即前、后件关系,分为线性结构(线性表、栈和队列)和非线性结构(树和图)。包含:①表示数据元素的信息;②表示各数据元素之间的前后件关系。(3)数据的存储结构,是指数据逻辑结构在计算机存储空间中的存放形式,也称数据的物理结构。一般来说,一种数据逻辑结构根据需要可以表示成多种存储结构,常用的数据的存储结构有顺序、链接、索引等。2、数据的逻辑结构与数据的存储结构不一定相同。一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构。常见的存储结构有顺序、链接、索引等。采用不同的存储结构,数据处理的效率是不相同的。真题分析【真题1】下列数据结构中,属于非线性结构的是________。(2009年9月)A)二叉树-7-B)带链栈C)循环队列D)带链队列解析:线性结构,是最简单最常用的一种数据结构。线性结构的特点是结构中的元素之间满足线性关系,按这个关系可以把所有元素排成一个线性序列,如:线性表、串、栈和队列都属于线性结构。而非线性结构是指在该类结构中至少存在一个数据元素,它具有两个或者两个以上的前件或后件,如树和二叉树等。答案:A【真题2】下列叙述正确的是________。(2007年9月)A)程序执行的效率只取决于所处理的数据量B)以上三种说法都不对C)程序执行的效率与数据的存储结构密切相关D)程序执行的效率只取决于程序的控制结构解析:影响程序执行效率的因素有很多,如数据的存储结构、程序处理的数据量、程序的算法等。顺序存储结构和链式存储结构在数据插入和删除操作上的效率就存在差别,其中,链式存储结构的效率要高一些。答案:C考试日期07-909-9出题次数11Point3:线性表、线性链表和循环链表出题趋势1、如果在一个数据结构中一个数据元素都没有,则称为空的数据结构。根据数据结构中各数据元素之间的前后件关系的复杂程度,分为线性结构与非线性结构。2、如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构。线性表是一个典型的线性结构。常见的有:线性表,栈,队列,循环队列和线性链表等。3、不满足线性结构条件的数据结构,就是非线性结构。常见的有:数组、广义表、树、二叉树和图都是非线性结构。4、在计算机内,线性表的存储结构有两种:顺序存储(称为线性表)和链式存储(线性链表)。线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构。真题分析【真题1】下列叙述中正确的是________。(2009年3月)A)循环队列是非线性结构B)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构-8-C)栈是“先进先出”的线性表D)队列是“先进后出”的线性表解析:主要考查了栈、队列、循环队列的概念,栈是“先进后出”的线性表,队列是“先进先出”的线性表。根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。循环队列也是线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。答案:B【真题2】数据结构分为线性结构和非线性结构,带链的队列属于__【5】__结构。(2006年9月)解析:数据结构分为线性结构和非线性结构,其中队列属于线性结构。队列有两种存储结构,一种是顺序存储结构,称为顺序队列;另一种是链式存储结构,称为带链队列。题目中所说的带链的队列就是指带链队列。无论队列采取哪种存储结构,其本质还是队列,仍属于一种线性结构。因此,本题的正确答案是线性结构。答案:线性【真题3】下列叙述中正确的是________。(2006年4月)A)双向链表是非线性结构B)只有根结点的二叉树是线性结构C)线性链表是线性表的链式存储结构D)栈与队列是非线性结构解析:线性链表是线性表的链式存储结构。栈与队列是特殊的线性表,它们也是线性结构;双向链表是线性表的链式存储结构,其对应的逻辑结构也是线性考试日期06-406-909-310-9出题次数1111结构,而不是非线性结构;二叉树是非线性结构,而不是线性结构。一个非空的数据结构如果满足下列两个条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件,则称之为线性结构。答案:C【真题4】下列叙述中正确的是________。(2010年9月)A)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构B)上述三种说法都不对C)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的D)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构解析:可以从存储密度的角度,比较链式存储结构和顺序存储结构的存储空间,所谓存储密度是指结点数据本身所占的存储量除以结点结构所占的存储总量所得的值。这个值越大,存储空间利用率越高。顺序表是静态分配的,其存储密度为1;而链式存储是动态分配的,其存储密度小于1。答案:D-9-Point4:栈、队列和循环队列出题趋势1、栈(Stack)又称堆栈。(1)栈是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。人们把此端称为栈顶,栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底。向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其下面的相邻元素成为新的栈顶元素。(2)由于栈的插入和删除运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把栈称为后进先出表(LastInFirstOut,简称LIFO);先进栈的元素必定后出栈,所以又把栈称为先进后出表(FirstInLastOut,简称FILO)。2、队列(Queue)简称队。(1)队列也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入操作,而在表的另一端进行删除操作。我们把允许插入的一端称作队尾(rear),允许删除的一端称作队首(front)。(2)向队列中插入新元素称为进队或入队,新元素进队后就成为新的队尾元素;从队列中删除队首元素称为离队或出队,该元素离队后,其后继元素就成为新的队首元素。(3)由于队列的插入和删除操作分别是在各自的一端进行的,每个元素必然按照进队的次序离队,所以又把队列称为先进先出表(FirstInFirstOut,简称FIFO)。3、循环队列。就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用,其实质还是顺序存储结构。真题分析【真题1】对于循环队列,下列叙述中正确的是________。(2009年9月)A)队头指针一定小于队尾指针B)队头指针可以大于队尾指针,也可以小于队尾指针C)队头指针是固定不变的D)队头指针一定大于队尾指针解析:循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针。所以队头指针可以大于队尾指针,也可以小于队尾

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功