Algorithm 查找关键点比较的数量C和移动的数量M

Algorithm 查找关键点比较的数量C和移动的数量M,algorithm,sorting,performance,processing-efficiency,Algorithm,Sorting,Performance,Processing Efficiency,我现在正在读N.Wirth——算法和数据结构 问题:他是如何计算这些C和M的?这个过程没有任何解释。。。(任何帮助都会有用) 让我告诉你是怎么回事。。。我遇到了以下情况: 2.2.1直接插入排序 。。。一个很好的效率度量是通过计算 需要项目移动(换位)的关键比较和M 他描述了该算法的工作原理: PROCEDURE StraightInsertion; VAR i, j: INTEGER; x: Item; BEGIN FOR i := 1 TO n-1 DO x := a[i];

我现在正在读N.Wirth——算法和数据结构

问题:他是如何计算这些C和M的?这个过程没有任何解释。。。(任何帮助都会有用)

让我告诉你是怎么回事。。。我遇到了以下情况:

2.2.1直接插入排序

。。。一个很好的效率度量是通过计算 需要项目移动(换位)的关键比较和M

他描述了该算法的工作原理:

PROCEDURE StraightInsertion; 
 VAR i, j: INTEGER; x: Item; 
BEGIN 
 FOR i := 1 TO n-1 DO 
 x := a[i]; j := i; 
 WHILE (j > 0) & (x < a[j-1] DO a[j] := a[j-1]; DEC(j) END ; 
 a[j] := x 
 END 
END StraightInsertion
所以问题是: 他如何计算这些CM?他没有解释找到所有这些数字的过程。你能帮我了解如何找到它们吗?任何帮助都是好的

PS 我一直在寻找关于这个问题的信息,但没有结果


另外:

以下是随机选择八个数字(如果需要)的示例中所示的插入过程:

初始密钥:44 55 12 42 94 18 06 67
v
i=1 44 55 12 42 94 18 06 67
v
v-----<
i=2124554294180667
v
v-----<
i=31242445594180667
v
i=4124445594180667
v
v---------<
i=51218424455940667
v
五-------------------
i=6 06 12 18 42 44 55 94 67
v
v--<
i=7 06 12 18 42 44 55 67 94

C是比较的数量,M是移动的数据项的数量。如果我们按照你的例子,在迭代1中,有1个比较,没有移动。在迭代2中,有2次比较和2次移动。等等现在,让我们考虑KTH迭代。将会有k个比较,并且假设你的确切位置是从1到k的一半,将会有k/2的移动。 当k从1变为n时,数字C和M是所有比较和移动的总和。你所要做的就是把总和加起来,从1到n不等,你就有了数字

Cmin = n-1                   Mmin = 3*(n-1) 
Cave = (n^2 + n - 2)/4       Mave = (n^2 + 9n - 10)/4 
Cmax = (n^2 + n - 4)/4       Mmax = (n^2 + 3n - 4)/2 
Initial Keys: 44 55 12 42 94 18 06 67
                 v
          i=1 44 55 12 42 94 18 06 67
                    v
              v-----<   
          i=2 12 44 55 42 94 18 06 67 
                       v
                 v-----<   
          i=3 12 42 44 55 94 18 06 67
                          v
          i=4 12 42 44 55 94 18 06 67
                             v
                 v-----------<    
          i=5 12 18 42 44 55 94 06 67
                                v
              v-----------------<    
          i=6 06 12 18 42 44 55 94 67
                                   v
                                v--<    
          i=7 06 12 18 42 44 55 67 94