插入排序的反转!

发布于 2024-09-06 04:38:59 字数 217 浏览 5 评论 0原文

这是我在 Wikipedia 站点中发现的问题(我想很好地学习排序算法)。无论如何,这是一个问题 - 你能向我解释一下如何展示它吗?

练习:假设 I 是数组 A 中的反转次数,则证明算法插入排序 (A) 的运行时间为 O(n + I)。

This a question I found in the Wikipedia site (I want to learn sort algorithms very well). Anyway, this is a question - could you explain to me how I can show it?

Exercise: Show that Algorithm Insertion Sort (A) runs in time O(n + I) given that I is the number of inversions in the array A.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

波浪屿的海角声 2024-09-13 04:38:59

查看 此页面

考虑此处介绍的算法:

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 引起的反转次数。这应该会使那里的证明非常容易理解。

Look at the Implementation and Analysis sections of this page.

Consider the algorithm presented there:

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;
    }
}

Notice that the while loop runs for v[i] iterations, where v[i] is the number of inversions caused by element i. This should make the proof there very easy to understand.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文