这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战
算法分析
目的
算法分析的目的在于改进算法
如何对一个算法进行评价?
- 算法的正确性
- 算法的健壮性:对于不合理的输入,能够给出提示信息(对不合理的数据输入的反应和处理能力)
- 时间复杂度:根据程序在计算机中运行时间多少来度量的,是一个算法运行时间的相对量度
- 空间复杂度:根据程序占用计算机存储空间多少来度量的
- 其他方面,如算法的可读性、间接性、可移植性及易测试性的好坏等
时间复杂度
上面几个因素前3个因素与计算机系统的硬件、软件环境以及要解决的问题的规模有关,与算法本身无直接关系,只有第4个因素之间与算法有关。因此,
把算法中语句执行的次数作为算法时间多少的量度。
- 频度统计法:把语句执行次数的多少作为算法时间复杂程度的度量分析方法
- 语句频度:指某语句被重复执行的次数
空间复杂度
一个算法在计算机存储器上所占用的存储空间包括以下3个部分:
存储算法本身所占用的空间:与算法书写的长短成正比算法的输入/输出数据所占用的空间:由解决的问题决定,不随算法的不同而改变算法在运行过程中临时占用的空间:因算法而异
算法的空间复杂度主要包括:局部变量(算法范围内定义的变量)所占用的存储空间和系统为实现递归(如果算法是递归的话)所使用的堆栈空间两个部分
其他方面
评价一个算法质量优劣标准的第3个方面包括算法的简洁性和可读性等