鸡尾酒会使用多少次比较?

问题描述 投票:-2回答:1

标题。我对鸡尾酒种类的比较次数感到困惑。冒泡排序使用n *(n-1)/ 2个比较,鸡尾酒排序使用多少个?

sorting bubble-sort
1个回答
0
投票

气泡排序使用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是通过次数时,交换次数为pp小于或等于n,并取决于输入数组的排序方式。

复杂度分析得出O(N^2)为最坏情况和平均情况,而O(N)为最佳情况。

同一Wikipedia文章描述了一种优化的冒泡排序,该冒泡排序执行[[至多 (n-1)*(n-2)/2比较,其中以n-1为最佳情况。与标准Bubble排序相比,这大约提高了2倍。

Cocktail Shaker排序被描述为Bubble排序的

alternative

优化。与标准Bubble分类相比,它也提供了大约2倍的改进。(来源Wikipedia


请注意,不可能为这些排序算法的

any

的比较次数提供精确的公式。在每种情况下,比较的数量取决于实际的输入数组,而不仅仅是元素的数量。我们只能给出最佳和最差情况的精确公式。
© www.soinside.com 2019 - 2024. All rights reserved.