摘要: 同时找出一个序列中的最小值最大值,一般方法需要2*(n-1)的比较次数。运用分治,可以降低比较次数。基本思路:把序列分为两部分,找出前半部分的最小值与最大值,再找出后半部分的最小值与最大值,然后比较得出整个序列的最小值与最大值。一直划分到序列只有两个元素时,则直接比较两个元素并返回结果。比较次数分析:f(1) = 1; f(2) = 1; 当n为奇数时,f(n) = f([n/2]) + f(n-[n/2]) + 2; 当n为偶数时,f(n) = 2*f(n/2) + 2.可以证明比较次数最多不超过3*[n/2]。import java.util.Random;import java.util 阅读全文
posted @ 2013-10-28 19:17 7hat 阅读(352) 评论(0) 推荐(0) 编辑