以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 算法理论与分析 』 (http://bbs.xml.org.cn/list.asp?boardid=60) ---- [讨论]一道北大CS考研题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=60&rootid=&id=32735) |
-- 作者:Logician -- 发布时间:5/20/2006 9:53:00 AM -- [讨论]一道北大CS考研题 有两个(递增)有序数组A和B,长度均为n。为简单起见,不妨设这2n个数全是互异的整数。 设计一个算法,能在O(log n)时间内找到两个数组“合并后的中数”。即,假设这2n个数已经归并成了一个长度为2n的有序数组C(C[0],...,C[2n-1])。 “合并后的中数”x=(C[n-1]+C[n])/2。输出这个x。 |
-- 作者:phoenixinter -- 发布时间:5/20/2006 4:55:00 PM -- 这个是原题么?感觉O(logn)不大可能的说 |
-- 作者:Logician -- 发布时间:5/20/2006 5:19:00 PM -- 是回忆题。O(log n)这里应该没错。 因为原题还要求证明log n阶是最优的(这个当然很简单)。 互异的条件是我加的…… |
-- 作者:phoenixinter -- 发布时间:5/20/2006 9:15:00 PM -- Say the two arrays are sorted and increasing, namely A and B. It is easy to find the median of each array in O(1) time. Assume the median of array A is m and the median of array B is n. Then, 1' If m=n, then clearly the median after merging is also m, the algorithm holds. 2' If m<n, then reserve the half of sequence A in which all numbers are greater than m, also reserve the half of sequence B in which all numbers are smaller than n. Run the algorithm on the two new arrays. 3' If m>n, then reserve the half of sequence A in which all numbers are smaller than m, also reserve the half of sequence B in which all numbers are larger than n. Run the algorithm on the two new arrays. Time complexity: O(logn) |
-- 作者:Logician -- 发布时间:5/21/2006 3:25:00 AM -- nod. 好办法。 ^_^ |
-- 作者:carroty -- 发布时间:6/14/2006 2:11:00 PM -- #include <iostream> using namespace std ; int main(){ cout<<"Enter size of the array:"; int size; int * a= new int[size]; cout<<"Enter array A:"; cout<<"Enter array B:"; if(a[0]>b[size-1]){ int as,bs,ae,be; cout<<(tmp_min+tmp_max)/2<<endl; |
-- 作者:Supremgoooo -- 发布时间:6/14/2006 4:57:00 PM -- 赞大家!! |
-- 作者:toniee -- 发布时间:7/10/2006 8:05:00 PM -- 好! |
-- 作者:liustream -- 发布时间:7/17/2006 5:54:00 PM -- 善! 长见识了 |
-- 作者:flykk -- 发布时间:12/19/2006 5:07:00 PM -- int tmp_min=(a[ae]<b[(size-1)-as])?a[ae]:b[(size-1)-as]; int tmp_max=(a[as]>b[(size-1)-ae])?a[as]:b[(size-1)-ae] 是不是反了 还有能不能把算法的原理说明一下 |
-- 作者:xiaoyou8519 -- 发布时间:7/26/2008 11:42:00 PM -- 无语 |
-- 作者:lzyzsd -- 发布时间:10/3/2008 9:37:00 AM -- 我觉得用归并排序应该可以,把这两个数组看作是归并排序第一步拆出的两个数组即可吧 |
-- 作者:hust512 -- 发布时间:2/26/2009 11:16:00 PM -- 下次再看,走过留痕! |
-- 作者:scdxjch -- 发布时间:2/21/2011 11:24:00 AM -- 今年的考研题~ |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
74.219ms |