一、算法的描述

(1)自然语言:英语,中文

(2)流程图:传统流程图,NS流程图

(3)伪代码:类语言:类C语言

(4)程序代码:C语言程序,JAVA语言程序…

 二、 算法与数据结构的关系

程序=数据结构+算法

数据结构即数据的逻辑结构;数据结构是相互之间存在的一种或多种特定关系的数据元素的集合;包括4类基本的结构,集合,线形结构,树形结构,图状或网状结构;算法指编程过程中完成一件事采用的方法;在编程过程中采用好的算法可以降低程序的时空复杂度。

三、算法的特性

 一个算法必须具备以下五个特性:

(1)有穷性:一个算法必须总是在执行有穷性之后结束,且每一步都在有穷时间内完成。

(2)确定性:算法中的每一条指令必须有确定的含义,没有二义性,在任何条件下,只有唯一的一条执行路径。

(3)可行性:算法是可执行的,算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

(4)输入:一个算法有零个或多个输入

(5)输出:一个算法有零个或多个输出

四、算法设计的要求

(1)正确性

(2)可读性

(3)健壮性

(4)高效性

五、算法效率

(1)时间效率:指的是算法所耗费的时间

(2)空间效率:指的是算法执行过程中所耗费的存储空间

算法的时间效率和空间效率有时候是矛盾的。

(3)算法时间效率的度量方法

         1、事后统计

          将算法实现,测算其时间和空间开销。

        (缺点:编写程序实现算法将花费很多时间和精力,所得实验结果依赖于计算机软硬件等环境因素,掩盖算法本身的优劣)

          2、事前分析(大多数采用)

          对算法所消耗资源的一种估算方法

算法运行时间=一个简单操作所需的时间+简单操作次数

即算法中每条语句的执行时间之和:

算法运行时间=∑每条语句的执行次数*该语句执行一次所需要的时间

(其中,每条语句所执行的次数又称为语句频度)

每条语句执行一次所需要的时间,一般是随机器而异的,取决于机器的指令性能,速度以及编译的代码质量,是由机器本身软硬件环境决定的,与算法无关。

通常来说,越高级的语言,执行速度越慢

例如:

两个n*n矩阵相乘的算法可描述为:

算法分层架构体系有哪些 算法结构分析_流程图

 为了便于比较不同算法的时间效率,我们仅比较他们的数量级

例如:T1(n)=10n^2  与  T2(n)=5n^3

数量级越小,时间效率越小

算法时间复杂度定义

算法中基本语句重复执行的次数是问题规模n的某个函数f(n),算法时间量度记作:T(n)=O(f(n))

它表示随着n的增大,算法执行的时间的增长率和f(n)的增长率相同,称渐进时间复杂度。

算法分层架构体系有哪些 算法结构分析_运行时间_02