Cormen插入排序算法分析

时间:2018-06-04 19:23:41

标签: algorithm

Cormen Algo Insertion Sort Analysis

在Cormen中,在分析插入排序时的第47页,伪代码中第5行的执行次数是从j = 2到j = n的t-1的总和? 我不明白。如果你读过Cormen,那么请帮我解决。

2 个答案:

答案 0 :(得分:1)

我不会给你答案,但我会给你一些提示,帮助你自己找到答案。

在第一次迭代中,i从1开始并向后移动。循环可能执行多少次?

j=6时,i从5开始并向后工作。它可以执行的最大次数是多少?

如果你回答这两个问题,那么你应该能够回答内循环在整个算法运行中执行多少次的问题。

在这种情况下,有助于假设原始数组按降序排列,并且您希望按升序对其进行排序。这也有助于获得一副牌,并用5张卡手动步行。

答案 1 :(得分:0)

让我们从一条更简单的行开始-例如第二行:

该循环将在 for 循环的每次迭代中执行 1 次。 for 循环在 j = 2和n 之间进行迭代,因此第2行可以由求和表示:

summation

使用求和属性,我们知道

summation

现在在第5行进行while循环:这次我们不知道该行将执行多少次,因为它取决于j和@Jim提到的数组中的元素。

为了简化分析过程,我们引入了一个变量tj,该变量根据 j 的值显示每次迭代执行第5行的次数。因此,可以说第5行将在每个循环中执行tj次。因此,我们可以用求和来表示它:

enter image description here