假设您有一个大小为n的数据集和两个处理该数据的算法 以同样的方式设置。算法A采用10个步骤来处理数据集中的每个项目。算法B以100个步骤处理每个项目。复杂性会是什么? 是这两种算法吗?
我从问题中得出算法A完成每个项目的处理,算法B的复杂度的十分之一,并使用问题的接受答案中提供的图表:What is a plain English explanation of "Big O" notation?我得出的结论是算法B的复杂度为O(n ^ 2),算法A的复杂度为O(n),但在没有实现的情况下,我很难得出结论。
答案 0 :(得分:4)
在开始对时间复杂性做出任何结论之前,您需要多个数据点。算法A和算法B之间的10步和100步的差异可能有很多不同的原因:
加法常数差:无论输入如何,算法A总是比算法B快90步。在这种情况下,两种算法都具有相同的时间复杂度。
标量乘法差:无论输入如何,算法A总是比算法B快10倍。在这种情况下,两种算法都具有相同的时间复杂度。
你提出的案例,其中B是O(n ^ 2),A是O(n)
许多其他可能性。