我有此代码:
int arr [];
QuickSort.(arr); // O(log n)
for (int i = 0; i < arr.length() - 1; i++) {
print(i); // O(n)
}
这的时间复杂度是多少?是O(n * log n)
还是O(n + log n)
?
答案 0 :(得分:0)
O(log n) + O(n) =
O(n + log n) =
O(n)
在复杂度分析中,您只保留最大的因素。当n > log n
消失时,log n
消失了,因为与n
达到无穷大时的n
相比,其增长微不足道。
另一方面,快速排序算法是O(n²)
算法,因此我想实际的复杂度应该是:
O(n²) + O(n) =
O(n² + n) =
O(n²)
n
是数组的大小。