数据结构和算法是计算机科学的两个重要的支柱。他们是不可分割的整体。
一、算法
算法是指解题方案的准确而完整的描述。但算法不等于程序,也不等于计算方法。当然程序也可以作为算法的一种描述,但程序通常还需要考虑很多与方法和分析无关的细节问题,这是因为在变成时要收到计算机系统运行环境的限制。通常,程序的编制不可能优于算法的设计。
作为一个算法,一般因具有可行性、确定性、有穷性、拥有足够情报四个基本特征。也因此设计算法时不仅仅需要考虑结果的可靠性,即不仅考虑算法结果的可行性,还要考虑不周的确定性,时间和步骤的有穷性等。因此算法十一组严谨地定于运算顺序的规则,并且每一个规则都是有效的,明确的,此顺序将在有限的次数下终止。
一个算法通常有两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。因此设计算法时不仅需要考虑树结构的设计,还要考虑数据的操作和运算及各操作之间的执行顺序。
算法的设计可以撇开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。
计算机算法是指解题方案的准确而完整的描述
二、存储结构
数据的逻辑结构在计算机存储空间中存放形式称为数据的存储结构也称数据的物理结构
三、算法复杂度
算法的复杂度主要包括时间复杂度和空间复杂度:算法在运行过程中需要辅助存储空间的大小成为算法的空间复杂度:算法的时间复杂度是指执行算法所需要的计算工作量,计算法执行过程中所需要的基本运算次数。
为了能够比较客观的反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算器、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。因此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量
四、算法的时间复杂度
**是指执行算法所需要的计算工作量。**不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
五、算法的空间复杂度
**一般是指执行这个算法所需要的内存空间。**一个算法所占用的存储空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。在许多实际问题中,通常采用压缩存储技术,以便尽量减少不必要的额外空间。
六、算法效率
我们通常用时间复杂度和空间复杂度来衡量算法效率,算法的时间复杂度是指执行算法所需要的计算工作量;算法所执行的基本运算次数与问题的规模有关,二一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间;一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构。
七、算法的基本特征
可行性、确定性、有穷性、拥有足够的情报
八、算法分析的目的
算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率
九、原地工作
一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间相对于问题规模来说是常数,则称该算法是原地(in place)工作的。
十、线型结构与非线性结构
根据数据结构中数据元素之间前后件关系的复杂程序,一般将数据结构分为两大类:线性结构与非线性结构。一个空的数据结构究竟是属于线性结构还是属于非线性结构,这要根据具体情况来确定。
并且线性结构与非线性结构都可以是空的数据结构。
如果一个非空对的数据结构满足下列两个条件:(1)有且只有一个根节点。(2)每个节点最多有一个前件也最多有一个后件。则称该数据结构为线型结构,又称线型表,不是线性结构的就是非线性结构。