插入排序反转!

时间:2010-06-20 15:52:49

标签: algorithm inversion

这是我在Wikipedia网站上发现的一个问题(我想很好地学习排序算法)。无论如何,这是一个问题 - 你能告诉我如何展示它吗?

练习:显示算法插入排序(A)在时间O(n + I)中运行,因为I是数组A中的反转次数。

1 个答案:

答案 0 :(得分:4)

查看this pageImplementationAnalysis部分。

考虑那里提出的算法:

private static void insertionsort()
{
    int i, j, t;
    for (i=1; i<n; i++)
    {
        j=i;
        t=a[j];
        while (j>0 && a[j-1]>t)
        {
            a[j]=a[j-1];
            j--;
        }
        a[j]=t;
    }
}

请注意,while循环运行v[i]次迭代,其中v[i]是元素i引起的反转次数。这应该使证据非常容易理解。