如何衡量一个算法的优劣?
如何衡量一个算法的优劣,见人见智。一个好的算法首先是要能够满足场景的需求,其次是在能够最大限度的节省资源(最低成本原则),最后是实现逻辑简单,比较容易理解(本质上也是最低成本原则)。但是,在现实中硬件资源不变,算法不变情况下,算法执行的效率提高,相对应往往是资源消耗增加。一个合格的算法是在一个可以接受的范围内满足场景需求,而一个优秀的算法则是在满足场景需求的基础上,最大限度的节省资源,简化逻辑。
比如我要完成一项计算任务,要求是在5分钟执行完成。现在有算法1:需要执行1分钟,消耗内存8G;算法2需要执行3分钟,需要消耗内存256M。那么,我们应该如何选择呢?首先,这两种方案都能满足我们的需求;其次:算法1的需要消耗的资源是算法2的32倍,算法1的效率是算法2的3倍。在这种满足需求的情况下,往往更倾向于选择算法2。衡量一个算法的优劣往往要评估多方因素,结合实践,综合比较最终得出结论。
衡量一个算法有哪些标准?
衡量一个算法的的标准主要有3个:算法的执行效率,算法的内存消耗和算法的稳定性。
算法的执行效率
往往和算法本身以及具体的数据有关系。通常会从3个维度的时间复杂度来衡量算法的的执行效率: 最好情况时间复杂度,最坏情况时间复杂度和平均情况时间复杂度。
算法的内存消耗
算法的内存消耗:往往和算法本身有关系。可以通过调整算法,以空间换时间来提升算法的执行效率。
算法的稳定性
算法的稳定性:算法的执行效率随着数据规模增长的变化也是衡量算法的稳定性的一个因素;同时,算法的内存消耗和数据规模增长的变化也是衡量算法的稳定性的一个因素。