微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

for 循环中 max() 函数的最坏情况复杂度是多少?

如何解决for 循环中 max() 函数的最坏情况复杂度是多少?

我已经看到 max() 的复杂度是 O(N)。 在程序片段中(在 geeksforgeeks),我看到以下代码的复杂性是 O(N)。 但是,如果在 for 循环内部这些是 O(N) 的另一个函数,那怎么可能呢? 所以总复杂度应该是 O(N^2)。 请解释什么是正确的以及如何?

int x(vector<int> nums){
    int tmp;
    for(auto i=0;i<nums.size();i++){
        maximum=max(nums);
        cout<<maximum;
    }
}

解决方法

请解释什么是正确的

所示函数的时间复杂度为 O(N*N)

以及如何?

具有线性复杂度的函数被称为线性次数。

理论中,编译器可能足够聪明,知道 max 返回相同的值并且没有副作用,并且在这种情况下会自动记住结果复杂度为 O(N)。但在实践中,这样的证明对于编译器来说通常太难了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。