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