n log n > n-但这就像一段pseudo-linear感情。如果n=1 billion,则登录n〜30;
n log n > n
pseudo-linear
n=1 billion
所以n log n会30 billion,这是30 X n,秩序n。我想知道两者之间的时间复杂度差异n log n and n在现实生活中是否显着。
n log n
30 billion
30 X n
n
n log n and n
例如:quick select在未排序数组中找到第k个元素时,正在O(n)使用quickselect算法。
quick select
O(n)
如果我对数组进行排序并找到第k个元素,则为O(n log n)。要用1 trillion元素对数组排序,60 times如果我quicksort和做的话,我会变慢index it。
O(n log n)
1 trillion
60 times
quicksort
index it
Big- O表示法的主要目的是让您像在帖子中所做的那样进行估算,并自己决定花费精力编写通常更高级的算法是否值得您付出额外的CPU周期。购买该代码的改进。根据情况,即使您的数据集相对较小,您也可能会得到不同的答案:
Big-O表示法隐藏的另一件事是常数乘法因子。例如,Quick Select具有非常合理的乘数,因此将其应用于非常大的数据集所节省的时间非常值得实施。
您需要记住的另一件事是空间的复杂性。通常,具有O(N*Log N) 时间复杂度的算法将具有O(Log N)空间复杂度。例如,当递归函数在堆栈容量有限的系统上运行时,这可能会给非常大的数据集带来问题。
O(N*Log N)
O(Log N)