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

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是通过次数时,交换次数为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

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

以上是关于鸡尾酒会使用多少次比较?的主要内容,如果未能解决你的问题,请参考以下文章

冒泡排序和鸡尾酒排序的代码分析

鸡尾酒算法排序

算法----鸡尾酒排序

鸡尾酒会算法 SVD 实现......在一行代码中?

算法笔记:鸡尾酒排序算法

js鸡尾酒排序算法