鸡尾酒会使用多少次比较?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸡尾酒会使用多少次比较?相关的知识,希望对你有一定的参考价值。
标题。我对鸡尾酒种类的比较次数感到困惑。冒泡排序使用n *(n-1)/ 2个比较,鸡尾酒排序使用多少个?
答案
气泡排序使用
n*(n-1)/2
比较
如果正确实施,则不行!
这是标准冒泡排序的伪代码:
procedure bubbleSort(A : list of sortable items )
n = length(A)
repeat
swapped = false
for i = 1 to n-1 inclusive do
/* if this pair is out of order */
if A[i-1] > A[i] then
/* swap them and remember something changed */
swap( A[i-1], A[i] )
swapped = true
end if
end for
until not swapped
end procedure
((来源:Wikipedia)
如您所见,气泡排序在通过列表/数组而不交换任何元素时停止。因此,当(n - 1) * p
是通过次数时,交换次数为p
。 p
小于或等于n
,并取决于输入数组的排序方式。
复杂度分析得出O(N^2)
为最坏情况和平均情况,而O(N)
为最佳情况。
同一Wikipedia文章描述了一种优化的冒泡排序,该冒泡排序执行[[至多 (n-1)*(n-2)/2
比较,其中以n-1
为最佳情况。与标准Bubble排序相比,这大约提高了2倍。
alternative
优化。与标准Bubble分类相比,它也提供了大约2倍的改进。(来源Wikipedia)请注意,不可能为这些排序算法的
any
的比较次数提供精确的公式。在每种情况下,比较的数量取决于实际的输入数组,而不仅仅是元素的数量。我们只能给出最佳和最差情况的精确公式。以上是关于鸡尾酒会使用多少次比较?的主要内容,如果未能解决你的问题,请参考以下文章