O(n + k log n)和O(n log n)有什么区别

时间:2020-06-29 03:34:49

标签: time-complexity runtime big-o complexity-theory

在算法分析的时间复杂度的大O表示法中,如果k大于n,O(n + k log n)是否与O(n log n)相同?我对此不太确定。

2 个答案:

答案 0 :(得分:0)

我不确定100%N + KlogN是什么意思。我习惯将K用作N的子集,例如“ N中的前K个项目集”,对于大N,通常只返回N中的前K个项目是因为大O时间是NlogK比NlogN快得多(因为K较小)。

如果您的字面意思是N + KlogN,那将比简单地NlogN更复杂,因为K加到了数字上。例如,当K变为零时,您只会得到NlogN,否则得到的值会大于NlogN,我希望这显然会更复杂。

我希望这能回答一些问题。我承认,我觉得我可能会错过这里的要点,如果可以的话,我表示歉意。

答案 1 :(得分:0)

否,在特定情况下,您提到的这些是不同的。例如,考虑以下算法:给定一个长度为N且数字K≥N的数组,对该数组进行线性扫描,然后对该数组进行K个二进制搜索。这里做了多少工作?好吧,线性搜索花费的时间为O(N),而K个二进制搜索的总时间为O(K log N),所以总工作量为O(N + K log N)。

但是,这里的工作是 not O(N log N)。由于K可以任意大,所以K log N的值可以超过N log N的值任意数量。观察这种情况的另一种方式:O(N log N)的界限意味着运行时仅取决于N而不取决于K。但是这里不是这种情况,因为以K方式启动曲柄,肯定会增加运行时间,与N是什么无关。

希望这会有所帮助!

相关问题