1、算法分析
• 算法复杂度是衡量算法难度的尺度。
• 算法需要的资源越多,复杂度越高。计算机的资源,最重要的是运算所需的时间和存储程序和数据所需的空间资源。
• 算法复杂度包括时间复杂度和空间复杂度。
• 复杂问题或高效算法一般不做算法分析,而是采用基准测试方法。
• 能够分析清楚的算法,一般是简单或低效算法;
• 难题(如货郎担问题)及高效算法很难分析清楚。
2、计算算法复杂度的困难
• 算法复杂度与问题规模大小有关;
• 输入数据的分布也会影响算法复杂度。
算法复杂度评价:
• 最好、最坏、平均;
• 通常着重于最坏情况下的算法复杂度。
精确计算算法复杂度的困难:
(1)由算法写出程序需要花费很大的精力;
(2)会因为程序写的好坏,影响算法的质量;
(3)测试数据很难对各个算法都公正;
(4)好算法需要反复改进,反复测试,工作量很大。
3、算法时间复杂度的表示
• 算法时间复杂度指程序从开始运行到结束需要的时间。
• 问题规模为n,算法需要的时间为T(n)时,T(n)称为算法的“时间复杂度”。
• 算法时间复杂度常用大O表示(读为:大圈,Order,big-O)。
• 算法时间复杂度与输入数据的规模有关。
• 如,二分查找算法复杂度是O(log n