【发布时间】:2015-11-01 10:18:24
【问题描述】:
我得到了一个数组,我被要求找出使用冒泡排序
对数组进行排序所需的交换次数现在我们知道了,我们可以通过n(n-1)/2 找到比较,但我需要的是actual swaps 的数量
我的第一反应是使用冒泡排序,每次使用 swap(),我都会增加一个 Swap 变量。但是这个时间复杂度是一个非常缓慢的过程,我希望你能帮助我找到一种优化的方法来解决我的困境
P.S.:我还需要比较按升序或降序排序是否更快....将其排序两次会使时间加倍。
编辑:
对不起,如果我不够清楚。我想在不使用冒泡排序的情况下找到交换。
【问题讨论】:
-
跟着你的第一直觉走。有一个额外的恒定时间操作(增加一个计数),不会改变整个排序方法的渐近运行时间......为什么会是一个“缓慢的过程”?
-
"但是这个时间复杂度是一个很慢的过程" 错了。在这种情况下,再添加一个操作对时间复杂度没有任何影响。此外,它是冒泡排序。如果时间复杂度是一个问题,你永远不会使用冒泡排序。
-
对不起,我根本不想使用冒泡排序。我想知道是否有任何算法可以在不使用冒泡排序的情况下找到交换
标签: arrays sorting swap bubble-sort