第2章_算法与数据结构.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 算法与数据结构 由于计算机加工的对象是数据。因此有必要对数据的特性进行研究。 ?所谓数据,是指一切能够由计算机接收和处理的对象。 随着计算机硬件、软件和外部设备的不断发展,数据这一概念的含义越来越广泛。不仅整数、实数、复数等是数据,字符、人名、文字、表格、图形等也都能够由计算机接收和处理,也都是数据。 一般地,数据不是单个孤立的,而是由一批基本单位的数据按一定的关系组织起来的。组成某种数据的基本单位叫做数据元素。 数据结构不仅要描述某种数据,而且要描述此种数据中各数据元素之间的相互关系。这种关系往往是用一组有关数据元素的运算给出的。 例如,集合是一种数据结构,我们定义了两个集合的并、交、差等运算以及判断一个元素是否属于某集合的运算。 ?数据结构包括数据的逻辑结构和数据的物理结构。 ?数据的逻辑结构,简称数据结构,是指数据元素之间的逻辑关系。 ?数据的物理结构,也称为存储结构,则是指数据元素在计算机存储器中的表示和安排。 计算机发展到今天有如此强大的功能,除了集成芯片制造工艺及芯片内体系结构的不断改进外,主要靠软件的进步。而软件的核心是算法,算法中蕴含的设计思想是灵魂。 ?所谓算法:即对解题方案进行准确而完整的描述。即将解题过程的每个细节准确地加以定义,确定采取的方法和步骤。 ?算法具有以下四个特征: ?可行性。算法执行的结果能达到预期的目的。 ?确定性。指算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。 ?有穷性。是指算法必须能在有限的时间内做完,即能在执行有限步骤之后终止。 ?拥有足够的信息。一个算法执行的结果总是与输入的初始数据有关,当输入不够或输入错误时,算法本身就无法执行或执行错误。 综上可知,一个可解的算法,必须在有限存储空间内运行有限的时间而得到正确结果。 ?评价一个算法是否优劣,主要看: ?算法是否正确。 ?计算的复杂性。衡量复杂性的标准 一是计算所需的步骤或指令条数,即运行的时间,称时间复杂度。 二是计算所需的存储单元数量,即占用的存储空间,称空间复杂度。 ?看算法是否简单和是否易读。 一个好的编程人员,应该有强烈的算法意识、细腻而又科学的算法思维、敏捷而又扎实的程序设计思想。所编写的算法所具有的特性和评价标准都最大限度地体现在软件的开发和运行当中。软件开发并不只是编写程序,软件的核心是解决算法问题。编程不过是软件最后的实现形式。 ?算法的表示工具——流程图 早在20世纪40年代,人们就已经在编程前使用流程图来做算法设计。流程图分两类: 一类是高层宏流程图,往往在编程后补画;另一类是细微流程图,需要在编程前详细描述。 传统流程图是由几何图形和有向线段组成。常用方框表示处理,用菱形框表示判断,用有向线段表示执行顺序。 ?下图是算法的三种基本控制结构的传统流程图。 顺序结构 选择结构 循环结构 用计算机解决一个实际问题,一般分为四个阶段:分析问题、确定算法、编制程序、上机调试。因此,任何问题都首先需要通过算法设计进行描述,然后用程序设计语言表达出来,才能在计算机上实现。 算法是一个有穷的规则序列,这些规则决定了解决某一特定题目的一系列运算。由此题目的一定输入,依照这些规则令计算机按部就班地进行计算,经过有限的计算步骤后能得到一定的输出。 本章“算法与数据结构”主要的研究内容是数据的逻辑结构和物理存储结构,以及在相应的存储结构下对数据的操作,即计算机算法。同时还要分析算法的时间复杂性和空间复杂性,以便对算法进行改进和选择更优的算法。 ?算法和数据结构是计算机程序设计的“两大支柱”,或者说: 算法+数据结构=程序 算法和数据结构的侧重点在于实践技术而不是理论方面,它以程序设计、离散数学等为基础。下面首先介绍基础知识。 2.1 计算机的问题求解模型 做任何事情都要遵循这样一个程序:通过问题的相关现象和数据,根据我们的知识和经验进行判断,最后得到一个结论或结果。 计算机的工作程序与人一样,可以用一个IPO图来描述其工作过程,如P28图2.1所示。 所谓处理过程,在计算机中是通过算法来描述,最后通过相应的程序开发工具将算法编写成能在计算机上执行的程序,从而完成问题的求解。 2.2 C语言基础 为了表示一个算法,可用不同的方法。常用的有自然语言、传统流程图、结构化流程图等。我们选择C语言作为算法描述语言。 2.2.1 C语言程序结构 先通过一个简单的例子,对C程序有一个概括性认识。 例2.1 从计算机键盘上输入两个整数,计算其和,并显示在显示器上。例如L2-1.c #include stdio.h main( ) {//求两个整数的和并输出 int a,b,c; //说明部分,变量应先定义后使用 //以下是语句部分 scanf(“%d,%d”,a,

文档评论(0)

ffpg + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档