排序算法的递推方程

时间:2013-03-29 20:19:08

标签: algorithm recurrence

我在家庭作业上有以下问题,我不知道如何处理它

  

假设我们有以下排序算法:

     

要对大小为N(A [1 ... N])的数组进行排序,算法将执行以下操作:

     
      
  1. 递归地,对第一个N-1个元素A [1 ... N-1]
  2. 进行排序   
  3. 使用二进制搜索找到A [N]的正确位置,将其添加到排序列表中。找到正确的位置后,需要将值移动到A [N]。
  4.         

    写出此算法的详细递推方程式(不要省略任何术语)。

2 个答案:

答案 0 :(得分:2)

enter image description here

其中C是常量。

让我们看看n > 1案例中每个术语的来源:

  • T_ {n - 1}
  

递归地,对第一个N-1个元素A [1 ... N-1]

进行排序
  • log n
  

使用二进制搜索找到A [N]的正确位置以将其添加到   排序列表

  • 名词
  

找到正确的位置后,需要将值移动到A [N]。

答案 1 :(得分:1)

设p(n)是针对n个元素的数组描述的算法的运行时间。首先,它递归地调用自己的第一个n-1元素,给我们一个T(n-1)的成本。然后,它使用二分搜索来找到元素在原始位置n的位置,从而获得log(n-1)时间。最后,它移动元素(最多n-1个)为新的元素腾出空间,最多需要n步。

将这些碎片放在一起,我们得到T(n)< = T(n-1)+ log(n-1)+ n - 1.最后,由于你没有指定基本情况,我假设算法只对空列表做任何事情(因此对其进行简单排序)然后得到T(0)= 0.