首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
一个长度为L(L≥1)的升序序列S,处在第个位置的数称为s的中位数。例如,若序列S1=(11,13,15,17,19),则Sl的中位数是15,两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若S2=(2,4,6,8,20),则Sl和S2的中位数是
一个长度为L(L≥1)的升序序列S,处在第个位置的数称为s的中位数。例如,若序列S1=(11,13,15,17,19),则Sl的中位数是15,两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若S2=(2,4,6,8,20),则Sl和S2的中位数是
admin
2015-12-30
35
问题
一个长度为L(L≥1)的升序序列S,处在第
个位置的数称为s的中位数。例如,若序列S1=(11,13,15,17,19),则Sl的中位数是15,两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若S2=(2,4,6,8,20),则Sl和S2的中位数是11。现有两个等长升序序列A和B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列A和B的中位数。
要求:
给出算法的基本设计思想。
选项
答案
求两个序列A和B的中位数最简单的办法就是将两个升序序列进行归并排序,然后求其中位数。这种解法虽可求解,但在时间和空间两方面都不大符合高效的要求,但也能获得部分分值。 根据题目分析,分别求两个升序序列A和B的中位数,设为a和b。 ①若a=b,则a或b即为所求的中位数。 原因:容易验证,如果将两个序列归并排序,则最终序列中,排在子序列ab前边的元素为先前两个序列中排在a和b前边的元素;排在子序列ab后边的元素为先前两个序列中排在a和b后边的元素。所以子序列ab一定位于最终序列的中间,又因为a=b,显然a就是中位数。 ②否则(假设a<b),中位数只能出现(a,b)范围内。 原因:同样可以用归并排序后的序列来验证,归并排序后必然有形如…a…b…的序列出现,中位数必出现在(a,b)之间。因此可以做如下处理:舍弃a所在序列A的较小一半,同时舍弃b所在序列B的较大一半。在保留两个升序序列中求出新的中位数a和b,重复上述过程,直到两个序列中,只含一个元素时为止,则较小者即为所求的中位数。每次总的元素个数变为原来的一半。 算法的基本设计思想如下。 分别求出序列A和B的中位数,设为a和b,求序列A和B的中位数过程如下: ①若a=b,则a或b即为所求中位数,算法结束。 ②若a<b,则舍弃序列A中较小的一半,同时舍弃序列B中较大的一半,要求舍弃的长度相等。 ③若a>b,则舍弃序列A中较大的一半,同时舍弃序列B中较小的一半,要求舍弃的长度相等。 在保留的两个升序序列中,重复过程①、②、③,直到两个序列中只含一个元素时为止,较小者即为所求的中位数。
解析
转载请注明原文地址:https://kaotiyun.com/show/oBRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
对阿拉伯半岛的统一起了促进作用的宗教是()。
关于前期罗马帝国时期的经济状况的叙述,不正确的是()。
系统总结了6世纪以前黄河中下游地区农牧业生产经验的著作是()。
中国共产党七届三中全会以后进行的工商业合理调整,核心内容是调整()。
国家实施的“211工程”计划主要是针对()
下列选项中不是严复的著作的是()
十六国时期的历史,可以划分为前后两个时期,其分界线是()。
诸侯国的国君如何用人呢?有人主张:“左右皆曰不可,勿听;诸大夫皆曰不可,勿听;国人皆曰不可,然后察之,见不可焉,然后去之。”这种主张最终可能出自下列哪位思想家之口()。
对下列4个序列用快速排序方法进行排序,以序列的第1个元素为基准进行划分。在第1趟划分过程中,元素移动次数最多的是()。
设结点x和y是二叉树中任意的两个结点,在该二叉树的先序遍历序列中x在y之前,而在其后序遍历序列中x在y之后,则x和y的关系是()。
随机试题
以下关于了解内部控制的说法中,不正确的是()。
易引起指骨坏死的是
妇女子官脱垂的病因病机是
在补中益气汤的配伍中在小柴胡汤的配伍中
溶浆→加药→制膜→干燥→分剂量→包装原料、附加剂→配液→滤过→灭菌→无菌分装→质检
账务处理录入凭证过程中,在()情况下,系统对当前编制的凭证不予认可。
为了熟悉各个部门的工作,某部门实施轮岗制度,人事部门的张三,后勤部门的李四,综合办的王五三人进行转岗,其中李四不去人事部。那么,轮岗的结果是:
为了得到老师的肯定,证明自己的实力,小李异常勤奋地学习,他的这种动机属于()
相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和______。
执行以下程序段a$=”VisualBasicProgramming”:b$=“C++”c$=UCase(Left$(a$,7))&b$&RightS(a$,12)变量c$的值为
最新回复
(
0
)