递归关系缓慢排序

时间:2014-09-28 20:55:31

标签: algorithm analysis relation recurrence

所以我参加了算法分析课,我们必须分析慢速排序的递归关系,我们发现它们是T(N)= 2T(N / 2) + T(N-1)+2。我不知道如何解决这个问题,因为它有多次重复调用,每次我尝试查找模式时都会扩展。什么是解决这类问题的最佳方法? 提前致谢。

1 个答案:

答案 0 :(得分:0)

慢速排序算法:

(1)找到最多2个数字,

(2)对其余的进行排序。

(1.1)找到前n / 2个元素的最大值,

(1.2)找到剩余n / 2个元素的最大值,

(1.3)找到这两个最大值中的最大值。

T(0) = 0

T(1) = 0

T(2) = 2 //因为你比较了两个元素,如果一个元素比另一个元素大,那就交换它们。

所以问题在于,如果你必须对N个元素进行排序,你必须找到上半部分中最大的元素T(N/2),然后在下半部分中,它需要另一个T(N/2)(因此第一个2T(N/2)),然后你必须比较它们并交换,如果一个比另一个大,这需要T(2) = 2(因此+2),之后你必须继续剩下的N-1元素,因为你只用了N中的1个,所以你剩下N-1,这就是为什么你必须为你的其余N-1元素做同样的事情,在这种情况下,你有+ T(N-1)