数据结构------算法和算法分析

算法和算法分析

一、算法的基本概念
1. 什么是算法
算法:算法是对特定问题的求解步骤,是指令的有限序列。
算法的特征:
(1)算法有0或多个输入
(2)算法至少有一个输出
(3)算法的每一条指令都可以执行
(4)算法的每一条指令都有确切的定义, 没有二义。
(5)算法必须总能在执行有限步以后终止。
2. 算法的描述方法
算法可以用自然语言、流程图、程序设计语言或伪代码描述。当一个算法用程序设计语言描述时,便成为程序。算法和程序的区别:算法必须是有穷的,而程序不一定。
3. 算法优劣的衡量标准
(1)正确性:算法执行结果应当满足预先规定的功能和性能要求。(2)可读性:一个算法应该思路清晰、层次分明、易读易懂。
(3)健壮性:输入不合法数据时,应能做适当处理,不至于引起严重后果。
(4)高效性:执行效率高,占用存储空间小。
二、算法的时间复杂度
(1)算法的时间复杂度
数据结构------算法和算法分析_第1张图片

算法的时间复杂度是程序运行从开始到结束所需的时间。

一般情况下,可以通过考察算法所对应的程序中的程序步数来衡量算法的时间复杂度。
一个算法时间花销与算法中语句的执行次数成正比例,算法中语句执行次数多,它的时间花销就多。
算法中语句的执行次数称为语句频度。
例:
(2)渐进时间复杂度
数据结构------算法和算法分析_第2张图片
数据结构------算法和算法分析_第3张图片
数据结构------算法和算法分析_第4张图片
数据结构------算法和算法分析_第5张图片
使用大O记号表示的算法的时间复杂度,称为算法的渐近时间复杂度。
渐近时间复杂度也常简称为时间复杂度。
通常用O(1)表示常数计算时间,即算法只需执行有限个程序步。
在大0记号下,可用程序步来估计算法的执行时间。
很多情况下,可以通过考察一个算法中的关键操作(关键操作被认为是一
个执行次数最多的程序步)的执行次数来计算算法的渐近时间复杂度。有时
也需要同时考虑几个关键操作,以反映算法的执行时间。
(3)最好、最坏和平均时间复杂度
最好情况:如果待查元素恰好是第一个元素,则需要查找的时间越短,这就是最好情况。
最坏情况:如果待查元素是最后一个元素,则是最坏情况。
平均情况:平均查找次数是n/2.
三、算法的空间复杂度
算法的空间复杂度指程序运行从开始到结束所需的存储量。算法空间复杂度一般按照最坏情况分析。问题实例的特征是指与问题的具体实例有关的量。程序运行所需的存储空间包括:
(1)固定部分
固定部分的空间和所处理数据的大小和个数无关,或者是与问题的实例的特征无关。
主要包括程序代码、常量、简单变量、定长的结构变量所占的空间。
(2)可变部分
可变空间大小与算法在某次执行中处理的特定数据的大小和规模有关。

你可能感兴趣的:(数据结构,数据结构)