直插分析

时间:2019-06-27 12:23:58

标签: sorting pascal insertion-sort

我目前正在阅读N. Wirths的文章:算法+数据结构=程序。我不确定,但是我认为所提供的直接插入排序的分析中可能会出错。相关段落的屏幕截图在此处:screenshot

    type index = 0..n
    var a: array[0..n] of item

    procedure straightinsertion
        var i,j: index; x: item;
    begin
        for i := 2 to n do
        begin x := a[i]; a[0] := x; j := i-1;
            while x.key < a[j].key do
                begin a[j+1] := a[j]; j := j-1;
                end;
            a[j+1] := x
        end
    end

我认为,比较次数的分析可能是错误的。他声称,第C_i个筛选中的键比较数i最多为i-1。但是不是i吗?因为在最坏的情况下,由于我们使用的是哨兵,所以我们也必须与哨兵进行额外的比较。我声称:

  • C_min = n-1
  • C_ave = 1/4 * (n^2 + 3n - 4)
  • C_max = 1/2 * (n^2 + n) -1

移动数M_i应为(i-1)+2。我相信M_min, M_ave, M_max是正确的文字(截图)。

能否请您确认我是对的还是我想念的东西?非常感谢!

0 个答案:

没有答案