一.基本概念
算法的定义:对待特定问题求解方法和步骤的一种描述,他是指令的有限序列(其中每条指令表示有一个或多个操作)
算法的描述:
中文,英文
流程图 NS流程图
伪代码:类语言 eg:类C语言
程序代码:C/C++语言 java语言……
二. 算法时间效率的度量
1.依据该算法编制的程序在计算机上执行所消耗的书简来度量
2.度量算发消耗时间
事后统计:将算法实现,测算时间与空间开销 缺点:环境好坏,掩盖了算法本身的优劣
事前分析:对算法所消耗资源的一种估计方法
NS流程图
三.算法与程序
1.算法:解决问题的一种方法或一个过程,考虑如何将输入转化成输出,一个问题可以有多种算法
2.程序:是用某种程序设计语言对算法的具体实现
算法特性:
有穷性 执行步骤和执行时间
可执行性 每条指令有确切的含义,没有二义性,在任何条件下,只有唯一的一条执行路 径,即对于相同的输入只能得到相同的输出
输入 有零个或者多个输入
输出 有一个或者多个输出
算法设计要求:
正确性:
1.无语法错误
2.对于几组输入数据能够得到满足要求的结果
3.对于精心选择的,典型苛刻且带有刁难性的几组数据能够得到满足要求的结果
4.一切合法的输入数据都能够得到满足要求的结果
可读性:
易语阅读交流
健壮性 (鲁棒性):
输入非法数据算法恰当的做出反应或进行相应处理,而不是产生莫名其妙的结果
高效性:
存储空间小,且效率高。
三. 算法运算时间
每条语句执行一次所执行的时间,一般随机器而异的,取决于机器指令的性能,速度以及编译器的代码质量,是有机器本身软件决定的,与算法无关。
所以:假设执行每条语句所需要的时间均为单位时间。
即改语句执行一次所需要的时间 =>(趋近于) 1
算发运行时间=语句频度