找到最小和最大100个数字所需的最小比较数是______________。
(A) 148
(B) 147
(C) 146
(D) 140答案: (A)
说明:从n个数字中找到最小和最大元素的步骤:
1. Pick 2 elements(a, b), compare them. (say a > b)
2. Update min by comparing (min, b)
3. Update max by comparing (max, a)
因此,我们需要为每个2个元素进行3个比较,因此所需比较的总数将为(3n)/ 2 – 2,因为我们不需要在第一步中更新最小值或最大值。
递归关系将是:
T(n) = T(⌈n/2⌉)+T(⌊n/2⌋)+2 = 2T(n/2)+2 = ⌈3n/2⌉-2
通过将值n = 100设为(3 * 100/2)-2 = 148 ,这就是答案。
这个问题的测验