1 / 58
文档名称:

c公共基础知识.doc

格式:doc   大小:192KB   页数:58页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c公共基础知识.doc

上传人:phl0420371 2017/11/22 文件大小:192 KB

下载得到文件列表

c公共基础知识.doc

文档介绍

文档介绍:第1章数据结构与算法
算法
算法的基本概念
,就是解决问题的操作步骤.
值得注意的是,算法不等于数学上的计算方法,,往往先设计算法,用某种表达方式(如流程图)描述,然后再用具体的程序设计语言描述此算法(即编程).在编程时由于要受到计算机系统运行环境的限制,因此,程序的编制通常不可能优于算法的设计.
算法的基本特征
一般来说,一个算法应具有以下4个基本特征.
(1)可行性(Effectiveness):算法在特定的执行环境中执行,应当能够得出满意的结果,即必须有一个或多个输出.
(2)确定性(Definiteness):算法中的每一个步骤都必须有明确的定义,不允许有模棱两可的解释和多义性.
(3)有穷性(Finiteness):算法必需在有限时间内做完,即算法必需能在执行有限个步骤之后终止.
(4)拥有足够的情报:,此算法才是有效的;而当提供的情报不够时,算法可能无效.
算法的基本要素
通常,一个算法由两种基本要素组成.
? 对数据对象的运算和操作;
? 算法的控制结构,即运算或操作时间的顺序.
(1) 算法中对数据的运算和操作
在一般的计算机系统中,基本的运算和操作有以下4类,如表1-1所示.
表1-1 4类基本的运算和操作

(2) 算法的控制结构
一个算法的功能不仅仅取决于所选用的操作,.
算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,、N-S结构化流程图、、选择、循环3种基本控制结构组合而成.
算法设计的基本方法
虽然设计算法是一件非常困难的工作,但是算法设计也不是无章可循,人们经过实践,、归纳法、递推法、递归法、减半递推技术和回溯法.
算法设计的要求
通常一个好的算法应达到如下目标:
(1)正确性(Correctness)
正确性大体可以分为以下4个层次:
①程序不含语法错误;
②程序对于几组输入数据能够得出满足规格说明要求的结果;
③程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据能够得出满足规格说明要求的结果;
④程序对于一切合法的输入数据都能产生满足规格说明要求的结果.
(2)可读性(Readability)
算法主要是为了方便人的阅读与交流,;晦涩难懂的程序易于隐藏较多错误,难以调试和修改.
(3)健壮性(Robustness)
当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果.
(4)效率与低存储量需求
效率指的是程序执行时,对于同一个问题如果有多个算法可以解决,执行时间短的算法效率高;存储量需求指算法执行过程中所需要的最大存储空间.
算法的复杂度
算法的复杂度是算法效率的度量,是评价算法优劣的重要依据.
算法复杂度包括算法的时间复杂度和算法的空间复杂的.
算法的时间复杂度
算法的时间复杂度是指执行算法所需要的计算工作量.
为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关.
算法的计算工作量是用算法所执行的基本运算次数来度量的,而算法所执行的基本运算次数是问题规模(通常用整数n表示)
算法的工作量=f(n)
例如,在N×N矩阵相乘的算法中,整个算法的执行时间与该基本操作(乘法)重复执行的次数n3成正比,也就是时间复杂度为n3,即
f(n)=O(n3)
在有的情况下,,当要排序的数组a初始序列为自小至大有序时,基本操作的执行次数为0;当初始序列为自大至小有序时,基本操作的执行次数为n(n-1)/,可以采用平均性态和最坏情况复杂性两种方法来分析.
算法的空间复杂度
算法的空间复杂度是指执行这个算法所需要的内存空间.
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间