多重复杂性

时间:2016-08-06 14:18:05

标签: time-complexity

如果我有一个算法,其中一部分具有复杂性大-O(nlogn),而其中一部分具有复杂性大-O(n)。算法的最终复杂性是什么?据我所知,它将是大O(nlogn)。

2 个答案:

答案 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),...)