如果我有一个算法,其中一部分具有复杂性大-O(nlogn),而其中一部分具有复杂性大-O(n)。算法的最终复杂性是什么?据我所知,它将是大O(nlogn)。
答案 0 :(得分:0)
你是对的,最糟糕的情况是重要的, 在你的情况下o(nlog(n))。
答案 1 :(得分:0)
这取决于你的意思"它的一部分" ...
假设您有一个复杂度为O(n)的for循环和一个O(logn)的二进制搜索
如果你的程序看起来像这样:
for(int i=0; i < n; i++) { // O(n)
/// some stuff here
}
binarySearch(); // O(logn)
时间复杂度将是O(n)
但是如果出现这种情况:
for(int i=0; i < n; i++){ // O(n)
binarySearch(); // O(n * logn)
}
时间复杂度将是O(nlogn)
修改强>
如果算法由具有不同时间复杂度的不同块组成,则算法时间复杂度= max(O(block1),O(block2),...)