【大话数据结构】02 算法 笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jvao_q7/article/details/78044938
《大话数据结构》
——程杰 共463页
笔记圈点主要内容,也请多多支持大话数据结构该书作者

第 2 章 算法

42页_开场白
44页_算法定义
算法的定义
算法是解决特定问题求解步骤的描述,
在计算中表现为指令的有限序列,
并且每条指令表示一个或多个操作
算法的特性
输入输出:算法具有零个或多个输入, 有一个或多个输出。
有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,
并且每一个步骤在可接受的时间内完成。
确定性:算法的每一步骤都具有确定的含义,不会出现二义性。
可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限的次数完成。

算法设计的要求
正确性:算法的正确性是指算法至少应该具有输入丶输出和加工处理无歧义性丶
能正确反映问题的需求丶能够得到问题的正确答案。
——正确性的是四层次
@ 算法程序没有语法错误
@ 算法程序对于合法的输入数据能够产生满足要求的输出结果
@ 算法程序对于非法的输入数据能够得出满足规格说明的结果
@ 算法程序对于精心选择的,甚至刁难的测试数据都有满足要求的结果。

可读性:算法设计的另一个目的为了便于阅读丶理解和交流
健壮性:当输入数据不合法时,算法也能做出相关的处理,而不是产生异常或莫名其妙的错误
时间效率高和存储量低:设计算法应该尽量满足时间效率高和存储量低的要求

算法效率的度量方法
事后统计方法:运用编辑程序自带的功能比较算法的好坏及突出问题
事前分析估算方法:计算运行次数
普通方法为1次,循环为n次,循环套循环为n*n
函数的渐近增长:n^k >kn^2 > kn >n
算法时间复杂度定义:T(n) = O(f(n))
一般情况下,随着n的增大,T(n)增长最慢的算法为最优算法
——常数阶:O(1) 例:sum = (1+n)* n/2
——线性阶:O(n) 例:for(i = 0; i < n; i++)
——对数阶:O(logn) 例:while(count < n){ count = count * 2 }
——平方阶:O(n^2) 例:循环相套



最坏情况与平均情况:
算法空间复杂度:

猜你喜欢

转载自blog.csdn.net/jvao_q7/article/details/78044938