算法和算法分析
对于同一个问题可能由不同的算法。究竟来如何评价这些算法
一个算法首先要具备正确性,健壮性,可读性和有穷性,然后我们再比较其算法的效率,来评判算法的优劣。
主要从时间和空间上的效率进行评价算法,二时间和空间往往是矛盾的
算法的时间
算法时间效率可以依据该算法编制的的程序在计算机上执行所消耗的的时间来衡量,一般有两种度量方法:(1)事后统计,将算法实现,测算其时间和空间开销,结果依赖于计算机的硬件环境,掩盖算法本身的优劣;(2)事前分析,对算法资源消耗的一种估算方法,
事前分析
每条语句执行的次数也叫做语句的频度
这就可以脱离计算机性能来讨论算法性能了。
举例
我们把算法所耗费的时间记为算法每条语句所执行的频度之和,上述算法的时间复杂度为:
这是一个关于N的多项式
为了方便比较两个算法的时间性能,我们只比较时间复杂度的数量级即可:
这是数学分析上的知识,当然理工科同学在高等数学上应该学过
一般情况下,我们在分析时间复杂度时只需要考虑基本操作的执行次数,也就是最内层循环的执行次数即可