- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
程序员考试考点分析与真题详解(第4版)
第1章数据结构与算法
数据结构是指数据对象及其彼此关系和构造方式,一个数据结构S可以用一个二元
组表示为S=(D,R)。其中,D是数据结构中的数据的非空有限集合,R是概念在D上的
关系的非空有限集合。在数据结构中,结点与结点间的彼此关系称为数据的逻辑结构,数据
在计算机中的存储形式称为数据的存储结构。
数据结构按逻辑结构不同分为线性结构和非线性结构两大类,其中非线性结构又可
分为树形结构和图结构,而树形结构又可分为树结构和二叉树结构。
依照考试大纲的要求,在数据结构与算法方面,要求考生掌握以下知识点。
1.常常利用数据结构
数组(一维数组、二维数组、静态数组、动态数组)、线性表、链表(单向链表、
双向链表、环形链表)、队列、栈、树(二叉树、查找树)和图(邻接矩阵、邻接表)等的
概念、存储和操作。
2.常常利用算法
(1)排序算法、查找算法、数值计算算法、字符串处置算法、递归算法、最小生
成树、拓扑排序和单源点最短路径求解算法、图的相关算法。
(2)算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决
策表)、算法的复杂性。
1.1算法设计概述
算法是在有限步骤内求解某一问题所利用的一组概念明确的规则。通俗地说,就是
计算机解题的进程。在这个进程中,无论是形成解题思路仍是编写程序,都是在实施某种算
法。前者是推理实现的算法,后者是操作实现的算法。一个算法应该具有以下5个重要的
特征。
(1)有穷性:一个算法(对任何合法的输入值)必需老是在执行有穷步以后结束,
且每一步都可在有穷时间内完成。
(2)肯定性:算法中每一条指令必需有确切的含义,读者理解时不会产生二义性。
在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
(3)输入:一个算法有零个或多个输入,以肯定运算对象的初始情况。所谓零个
输入是指算法本身定出了初始条件。这些输入取自于某个特定对象的集合。
(4)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有
输出的算法是毫无心义的。
(5)可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的
大体运算执行有限次来实现的。
算法设计要求正确性、可读性、健壮性、高效率与低存储量需求。
效率指的是算法执行的时间。对于解决同一问题的多个算法,执行时间短的算法效
率高。存储量需求指算法执行进程中所需要的最大存储空间。二者都与问题的规模有关。
算法的复杂性是算法效率的气宇,是算法运行所需要的计算机资源的量,是评价算
法好坏的重要依据。可以从一个算法的时间复杂度与空间复杂度来评价算法的好坏。当将一
个算法转换成程序并在计算机上执行时,其运行所需要的时间取决于下列因素。
(1)硬件的速度。例如,利用486仍是利用586.
(2)书写程序的语言。实现语言的级别越高,其执行效率就越低。
(3)编译程序所生成目标代码的质量。对于代码优化较好的编译程序其所生成的
程序质量较高。
(4)问题的规模。例如,求100之内的素数与求1000之内的素数其执行时间必
然是不同的。
显然,在各类因素都不能肯定的情况下,很难比较出算法的执行时间。也就是说,
利用执行算法的绝对时间来衡量算法的效率是不适合的。为此,可以将上述的各类与计算机
相关的软、硬件因素都肯定下来,这样一个特定算法的运行工作量大小就只依赖于问题的规
模(通常常利用正整数n表示),或说它是问题规模的函数。
1.时间复杂度
一个程序的时间复杂度是指程序运行从开始到结束所需要的时间。
一个算法是由控制结构和原操作组成的,其执行时间取决于二者的综合效果。为了
便于比较同一问题的不同算法,通常的做法是:从算法当选取一种对于所研究的问题来讲是
大体运算的原操作,以该操作重复执行的次数作为算法的时间气宇。在一般情况下,算法中
原操作重复执行的次数是规模n的某个函数T(n)。
许多时候要精准地计算
文档评论(0)