摘要:
编程之美的中的课后习题:问题:已知集合S有n个元素x1,x2,….xn,求其中最大的和第二大的元素。1、朴实的遍历寻找。寻找最大数的比较次数为n-1,第二大为n-2次,总次数2n-3;2、分治法。分析:我们要尽可能的减少比较次数,为简单起见,设n为2的幂。分治:把S分成大小为n/2的两个子集P和Q。如果现在直接进行归纳,则假设已知P和Q中的最大和第二大的元素,分别记为p1,p2和q1,q2,然后查找S中的最大和第二大的元素。很明显,两次比较足以找到S中的这两个元素。第一次比较最大数p1和q1,此时得到一个新的第二大的数,这个数与原来的第二大的数(P或Q中的一个)比较一次,记为所求(比较过程见下 阅读全文
posted @ 2013-04-16 09:18
legendmaner
阅读(707)
评论(0)
推荐(0)

浙公网安备 33010602011771号