算法(algorithm)具有以下特性
有输入:必须有0个或多个输入
有输出:有一个或多个输出,输出的量是算法计算的结果
确定性:每一步都应确切地、无歧义地定义。
有穷性:执行有穷步后结束
能行性:每一条运算都必须是足够基本的。能通过计算机指令精确地执行,有限次计算就能完成
算法的性能标准
正确性(correnctness):能正确地执行预定的功能和性能要求
可使用性(usability):能够很方便的使用。也称用户友好性
可读性(readability):逻辑必须是清晰、简单和结构化的
效率(efficiency):执行时计算机资源的消耗,包括存储和运行时间的开销,前者叫算法的空间代价,后者叫时间代价
健壮性(robustness):调用状态进行自动检错、报错并通过与用户对话来纠错的功能。也叫容错性或例外处理
简单性(simplicity):所采用数据结构和方法的简单程度
算法复杂性度量
空间复杂度(space complexity):当问题的规模以某种单位从1增加到n时,解决这个问题的算法在执行时所占用的存储空间也以某种单位由1增加到S(n),则称此算法的空间复杂度为S(n)
时间复杂度(time complexity):当问题的规模以某种单位从1增加到n时,解决这个问题的算法在执行时所耗费的时间也以某种单位由1增加到T(n),则称此算法的时间复杂度为T(n)
程序步:在语法上或语义上有意义的一段指令序列,而且这段指令序列的执行时间与实例特性无关
c < log2n < n < nlog2n < n² < n³ < 2的n次方 < n!
网友评论