5-53 两个有序序列的中位数 (25分)

原创 2016年08月31日 11:55:58

5-53 两个有序序列的中位数 (25分)

已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,,AN1​​的中位数指A(N1)/2的值,即第(N+1)/2个数(A0​​为第1个数)。
输入格式:

输入分三行。第一行给出序列的公共长度N0<N100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。
输出格式:

在一行中输出两个输入序列的并集序列的中位数。
输入样例1:

5
1 3 5 7 9
2 3 4 5 6

输出样例1:

4

输入样例2:

6
-100 -10 1 1 1 1
-50 0 2 3 4 5

输出样例2:

1

思路
生成两个链表(记录长度),比较寻找到中间的那一个,输出

点击访问 PTA-测验

#include <stdio.h>
#include<stdlib.h>
/* 评测结果 时间  结果  得分  题目  编译器     用时(ms)  内存(MB)  用户
2016-08-31 11:57    答案正确    25  5-53    gcc     44  1   569985011
测试点结果 测试点   结果  得分/满分   用时(ms)  内存(MB)
测试点1    答案正确    6/6     1   1
测试点2    答案正确    6/6     2   1
测试点3    答案正确    4/4     13  1
测试点4    答案正确    4/4     1   1
测试点5    答案正确    1/1     1   1
测试点6    答案正确    4/4     44  1
查看代码*/
int Move(int*,int*,int);

int main(){
    int n;
    scanf("%d",&n);
    int*a=(int*)malloc(sizeof(int)*n);
    int*b=(int*)malloc(sizeof(int)*n);
    for(int i=0;i<n;i++)
scanf("%d",&a[i]);
    for(int i=0;i<n;i++)
    scanf("%d",&b[i]);
int Result=Move(a,b,n);
printf("%d",Result);

    return 0;
}


int Move(int*a,int*b,int n){
    while(--n){
        if(*a>=*b)++b;
        else ++a;
//      printf("%d-",(*a)>(*b)?(*b):(*a));
    }
    return (*a)>(*b)?(*b):(*a);
}
版权声明:写这些东西还是问了交流进步,如果你有不同的方法、见解,欢迎交流分享。文章中附的代码只传达当时我的一种做法,并非我认为最好的。

PAT 两个有序序列的中位数

PAT 两个有序序列的中位数
  • zhuyu__com
  • zhuyu__com
  • 2016年03月24日 21:19
  • 2627

两个有序序列的中位数

两个有序序列的中位数
  • Elenore1997
  • Elenore1997
  • 2017年10月25日 20:47
  • 152

5-7 两个有序序列的中位数 (25分)

已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A_0, A_1, \cdots, A_{N-1}A​0​​,A​1​​,⋯,A​N−1​​的中位数指A_{(N...
  • qq_37353105
  • qq_37353105
  • 2017年06月07日 15:28
  • 579

浙大PAT 2-13. 两个有序序列的中位数 (解题思路)

2-13. 两个有序序列的中位数 时间限制 40 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Stand...
  • a418382926
  • a418382926
  • 2014年03月18日 20:13
  • 2231

7-19 两个有序序列的中位数(25 分)

已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列,的中位数指A​(N−1)/2​​的值,即第⌊个数(A​0​​为第1个数)。 输入格式: 输入分三行。第...
  • s136424
  • s136424
  • 2017年11月26日 17:00
  • 107

两个有序序列的中位数(25 分)

已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A​0​​,A​1​​,⋯,A​N−1​​的中位数指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋个数(A​0​...
  • m0_38015368
  • m0_38015368
  • 2017年11月12日 17:29
  • 328

浙江大学PAT上机题解析之2-13. 两个有序序列的中位数

已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0, A1…AN-1的中位数指A(N-1)/2的值,即第[(N+1)/2]个数(A0为第1个数)。 输入格式说明...
  • chenglechao
  • chenglechao
  • 2013年09月01日 01:59
  • 3031

2-13. 两个有序序列的中位数(25)

2-13. 两个有序序列的中位数(25) 时间限制 120 ms 内存限制 32000 kB 代码长度限制 8000 B ...
  • u011415955
  • u011415955
  • 2014年07月19日 22:58
  • 637

浙江大学PAT上机题解析之2-11. 两个有序链表序列的合并

浙江大学 PAT 有序链表合并效率问题
  • chenglechao
  • chenglechao
  • 2013年08月31日 18:02
  • 3344

5-16 两个有序链表序列的交集 (20分)

5-16 两个有序链表序列的交集 (20分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,...
  • chan_yeol
  • chan_yeol
  • 2016年03月27日 11:29
  • 2427
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:5-53 两个有序序列的中位数 (25分)
举报原因:
原因补充:

(最多只允许输入30个字)