【发布时间】:2015-07-28 10:28:00
【问题描述】:
我知道衡量渐近复杂度可以基于你拥有的任何资源,无论是时间、内存使用情况、比较次数等。但是当涉及到排序时,我意识到我们通常将渐近符号与基本符号联系起来诸如交换/步骤数或比较数之类的操作。
更具体地说,我发现排序算法中的所有这些 Big-O 都是基于比较次数,而不是交换次数(例如,在选择排序中)。所以我们在这里假设比较比排序本身所需的实际步骤更昂贵?为什么比较如此流行?
在冒泡排序中,如果我们还包括在最坏情况下“冒泡”的次数,那么上限不会增加大约另一个 n2 吗?这个增幅很大。那么为什么我们在这里忽略它呢?
如果我错了,请纠正我。谢谢。
【问题讨论】:
-
"增加另一个 n^2" - 但它已经是 O(n^2)...
-
我的意思是,我们一开始已经有 n^2,如果我们计算交换+比较,我们将得到 2n^2?
-
但是 Theta(2 * n**2) = Theta(n**2);您可能需要重新了解您的增长顺序。
-
我觉得你需要复习一下big-O的定义...
标签: algorithm sorting big-o computer-science asymptotic-complexity