同时最大和最小元素的比较次数

时间:2011-12-24 22:51:20

标签: algorithm recursion

这是我想要解决的问题:


提出以下分而治之算法来寻找同时最大值和最小值:

  • 如果有一个项目,则为最大值和最小值

  • 如果有两个项目,那么比较它们,在一个比较中,您可以找到最大值和最小值。

  • 否则,将输入分成两半,尽可能均匀地划分(如果N为奇数,则两半中的一半将具有比另一半更多的元素)。

  • 递归地找到每一半的最大值和最小值,然后在另外两次比较中产生整个问题的最大值和最小值。

(b)假设N的形式为3 + 2k。此算法使用的确切比较数是多少?


对于这一点(b),我试图找到一个复发方程来解决,但它没有用。 我试过了

 T(n)= T(n/2+1) + T(n/2) + 3

其中三是我尝试3输入时的最低成本。 有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

你的递推方程不应该有n = 3特殊情况的术语。算法给你这些事实:

  • T(1)= 0
  • T(2)= 1
  • T(n)(n> 2)= T(floor(n / 2))+ T(ceil(n / 2))+ 2

这应该是你需要的所有答案。