计算复杂度取决于两个变量

Computational complexity depending on two variables

我有一个算法,它主要由 k-NN 组成,然后是涉及查找排列的计算,然后是一些 for 循环。一行一行,我的计算复杂度是:

O(n) - for k-NN
O(2^k) - for a part that computes singlets, pairs, triplets, etc.
O(k!) - for a part that deals with combinatorics.
O(k*k!) - for the final part. 

K这里是一个参数,用户可以自己选择,一般来说偏小一些(10-100)。 n 是我的数据集中的示例数量,这可能会变得非常大。

我的算法的总体复杂度是多少?只是 O(n) 吗?

As k <= 100, f(k) = O(1) 每个函数 f.
在你的情况下,有一个函数f使得总时间为O(n + f(k)),所以它是O(n)