C 冒泡排序-如果需要n个操作对大小为k的列表进行排序,那么对大小为2k的列表进行排序大约需要多少个操作?

C 冒泡排序-如果需要n个操作对大小为k的列表进行排序,那么对大小为2k的列表进行排序大约需要多少个操作?,c,big-o,C,Big O,这是我正在学习的课程中的一个可选问题,他们给出的答案是4n。但现在不管我怎么想,我都不明白他们是怎么来的。我还是个新手,只是在学习大O符号,所以我肯定我错过了一些简单的东西,但对我来说没有意义。我认为冒泡排序需要n*k运算,所以如果你把k变成2k,我就有n*2k。我相信最坏的情况是k=n-1,所以实际上是n*2n,也就是3n。我可能完全错了,但这就是我来这里寻求帮助的原因。我的课程并没有真正(或者我不觉得)涵盖这样一个问题,所以我不知道如何解决它。谢谢 冒泡排序在最坏情况和平均情况下都非常复杂

这是我正在学习的课程中的一个可选问题,他们给出的答案是4n。但现在不管我怎么想,我都不明白他们是怎么来的。我还是个新手,只是在学习大O符号,所以我肯定我错过了一些简单的东西,但对我来说没有意义。我认为冒泡排序需要n*k运算,所以如果你把k变成2k,我就有n*2k。我相信最坏的情况是k=n-1,所以实际上是n*2n,也就是3n。我可能完全错了,但这就是我来这里寻求帮助的原因。我的课程并没有真正(或者我不觉得)涵盖这样一个问题,所以我不知道如何解决它。谢谢

冒泡排序在最坏情况和平均情况下都非常复杂

我们对大小k有n个运算,这意味着k^2=n

所以我们把k加倍,我们有(2k)^2=X或4k^2=X,其中X=2k大小的运算

插入n=k^2这一事实,你有4n=X


这是您的答案:)

另请参见简单的,
size k
列表要求按Big-O执行
k^2
操作顺序。
size 2k
列表要求执行
(2k)^2=4k^2
操作。现在,如果
n≈ k^2=>4k^2≈ 4n
为什么需要k^2?我以为是k*2不是k的平方?你从哪儿弄来的?如果我能找出你从哪里得到的平方,对我来说会更有意义。你的回答把我推向了正确的方向,但我还是有点迷路——如果我反应慢了,我很抱歉,谢谢你的时间。编辑:为什么括号绕(2k)转,这是在哪里确定的?因为这显然也会改变结果。冒泡排序是一个k^2大O复杂度。谢谢,这非常有用。我唯一剩下的问题是,当它从k^2变为(2k)^2时,是什么要求我们把括号放在那里,以便我知道将来如何利用它?大小。所以大O表示法是根据输入的大小来工作的。给定X的大小,初始值为X=k。稍后,您将得到X=2k。把它想象成一个大的O x^2,你要替换x的值。运算顺序告诉我们在乘法之前先做指数(PEMDAS!),所以我们要确保在“E”(指数)之前有一个“P”(括号),以保持原始公式