大家帮我做一个算法题。

nicholasni 2006-03-25 01:57:19
设X[0:n-1]和Y[0:N-1]为2个数组,每个数组中含有n个已经排好顺序的数.设计一个时间复杂度O(logn)
的算法,找出X和Y的中位数!
...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiftymetre 2006-03-26
  • 打赏
  • 举报
回复
中位数的定义:将一组数据依大小顺序排列后,若数据的个数为奇数个,就以位于最中间的那个数据作为中位数

设X[0:n-1]和Y[0:N-1]为2个数组,每个数组中含有n个已经排好顺序的数.设计一个时间复杂度O(logn)
的算法,找出X和Y的中位数!


2个数组,每个数组中含有n个已经排好顺序的数.??听不懂了,既然排序好了,是不是找X中的中位数,和Y中的中位数的呢?

还是把二个数组连起来,之后再排序一次?然后找出中位数啊。


逸学堂 2006-03-26
  • 打赏
  • 举报
回复
中位数??
已经排序了的数组不就是中间的数字吗??
如果N是偶数的话,就中间两个的平均数啊
Death_YEH 2006-03-26
  • 打赏
  • 举报
回复
将两个数组的中值进行比较
比较后每个数组可去掉一半
在两个剩余的数组中在进行上述操作

就像一个数组的“二分法”
双杯献酒 2006-03-26
  • 打赏
  • 举报
回复
不过,显然合并后数据个数是偶数个呀,哪里来"中位"啊?
双杯献酒 2006-03-26
  • 打赏
  • 举报
回复
估计楼主就是要想求 把两个数组连起来后的那个中位数.
但显然不能连后找,那样复杂度就是O(n)了,不符合要求.

因为要求复杂度为O(logn),所以应该是一个类似折半查找的算法.
vsfan 2006-03-25
  • 打赏
  • 举报
回复
同楼上
rexchou 2006-03-25
  • 打赏
  • 举报
回复
中位数??
已经排序了的数组不就是中间的数字吗??
如果N是偶数的话,就中间两个的平均数啊
tianhuo_soft 2006-03-25
  • 打赏
  • 举报
回复
中位数? n/2 是线形的吗? p+=n/2;

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧