2011年4月15日

算法导论9.3-9习题解答(寻找中位数)

摘要: CLRS 9.3-9 :选择主输油管道的最优位置(使得各喷管长度总和最小的位置)。算法思想:1.当n为奇数时,其实就是求median;2.当n为偶数时,就是第n/2小和第n/2 + 1小的数为边界的闭区间的任何数。其实这个证明还是蛮简单的,可以移动x轴来观察情况,位于median处(n为奇数)或median范围内(n为偶数)时,设其距离为min,当移动x轴时,移出这个范围,则可以发现所有点(包括median点)到x轴的距离必然大于min。画一下图,就会一目了然。在这里用到了寻找第i小的数#include <iostream>#include <time.h>usingn 阅读全文

posted @ 2011-04-15 18:57 NULL00 阅读(4351) 评论(0) 推荐(0) 编辑

二分查找算法

摘要: 二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的 阅读全文

posted @ 2011-04-15 17:31 NULL00 阅读(123577) 评论(3) 推荐(1) 编辑

算法导论9.3-8习题解答(类似二分查找算法)

摘要: CLRS 9.3-8:设X[1...n]和Y[1...n]为两个数组,每个都包含n个已排序好的数。给出一个求数组X和Y中所有2n个元素的中位数的、O(lgn)时间的算法。算法思想:该算法类似于二分查找算法1.两个数组中小于median的个数为(n - 1)个,假设该median为数组a中的第k个,k为数组下标,那么在数组a中已经存在k个值小于median,那么在数组b中必然有(n - 1) - k = (n-k-1)个数小于median,如果b[n - k - 2] <= median <= b[n - k - 1],那么median就找到了,如果median >= b[n 阅读全文

posted @ 2011-04-15 17:12 NULL00 阅读(2871) 评论(2) 推荐(0) 编辑

导航