我试图理解n ^ 2对于n&lt; n ^ 2是如何快于nlogn的?当n> = 100时,100和相反。一般情况并非如此,但这是一个练习,我不想回答,而是引导我走向正确的方向。我可以在n = 100的交点处绘制两个函数,其中n <100。 100 O(n ^ 2)更快并且n> 1。 100 O(nlogn)更快。
我提出了^ 2 + b和c * nlog(n)+ d
这里我理解的关键是不变,这会产生差异。但是,我需要提出能够满足上述情况的常量。有没有一种方法或技术可以完成,或者我是否正确地朝着错误的方向前进?
原始问题:詹姆斯和布拉德正在争论他们的排序算法的性能。 James声称他的O(N logN)时间算法总是比Brad的O(N2)时间算法快。为了解决这个问题,他们在许多随机生成的数据集上实现并运行这两种算法。令詹姆斯感到沮丧的是,他们发现如果N&lt; 100 O(N2)时间算法实际上运行得更快,并且仅当N> = 100时,O(N logN) - 时间更好。解释为什么上述情况是可能的。你可以给出数值例子。
答案 0 :(得分:1)
采用您已有的公式,^ 2 + b和c * nlog(n)+ d
将n替换为100,并将它们设置为相等。这将显示a,b,c和d之间的关系。选择一组符合该约束的值。
答案 1 :(得分:1)
尝试考虑每个等式中每个变量的含义。我会继续忽略某些变量(根据需要将它们设置为0或1),并专注于决定变量左边的意思。每个A,B,C和D的含义是什么?这些变量的界限是什么?例如,负运行时不是一个东西,所以没有变量可以是负的。听起来很明显,但问题是方向,而不是实质。为了增加收益,尝试使A = C = 1并操纵B和D.
答案 2 :(得分:0)
下面的链接在图中显示两个函数相交的明显情况。我相信它可以帮助你理解一个具体的例子。
http://mohalgorithmsorbit.blogspot.com/2013/12/complexity-theory-approaching.html