问题描写叙述

一个长度为L(L ≥1) 的升序序列S。处在第 ⌜ L/2 ⌝ 个位置的数称为S的中位数。比如,若序列S1=(11,13,15,17,19)。则S1的中位数是15。
两个序列的中位数是含它们全部元素所组成的升序序列的中位数。

比如,若S2=(2,4,6,8,20)。则S1和S2的中位数是11。

如今有两个等长升序序列A和B,试设计一个在时间和空间都尽可能高效的算法。找出两个序列A和B的中位数。

算法思想

分别求两个升序序列A。B中位数,设为a和b
1). 若a=b,则a或b即为所求中位数,算法结束;
2). 若a<b。则舍弃序列A中较小的一半,同一时候舍弃序列B中较大的一半,要求两次舍弃的长度相等。
3). 若a>b,则设计序列A中较大的一半。同一时候设计序列B中较小的一半。要求两次舍弃的长度相等;

算法描写叙述

int FindMid(int A[], int B[])
{int s1=0,d1=MaxSize-1,m1;int s2=0,d2=MaxSize-1,m2;while(s1!=d1||s2!=d2){m1=(s1+d1)/2;m2=(s2+d2)/2;if(A[m1]<B[m2]){if((s1+d1)%2==0){s1=m1;d2=m2;}else{s1=m1+1;d2=m2;}}else if(A[m1]>B[2]){if((s2+d2)%2==0){d1=m1;s2=m2;}else{d1=m1;s2=m2+1;}}else{return A[m1];}}return A[s1]<B[s2]?A[s1]:B[s2];
}

详细代码见附件


附件

#include<stdio.h>
#define MaxSize 5int FindMid(int*, int*);int main(int argc,char* argv[])
{int A[MaxSize]={11,13,15,17,19};int B[MaxSize]={2,4,6,8,20};int Num;Num=FindMid(A,B);printf("The mid Num is %d\n",Num);return 0;
}int FindMid(int A[], int B[])
{int s1=0,d1=MaxSize-1,m1;int s2=0,d2=MaxSize-1,m2;while(s1!=d1||s2!=d2){m1=(s1+d1)/2;m2=(s2+d2)/2;if(A[m1]<B[m2]){if((s1+d1)%2==0){s1=m1;d2=m2;}else{s1=m1+1;d2=m2;}}else if(A[m1]>B[2]){if((s2+d2)%2==0){d1=m1;s2=m2;}else{d1=m1;s2=m2+1;}}else{return A[m1];}}return A[s1]<B[s2]?A[s1]:B[s2];
}

转载于:https://www.cnblogs.com/brucemengbm/p/7233664.html

第1章第1节练习题10 查找中位数相关推荐

  1. 无头结点单链表的逆置_第1章第2节练习题11 就地逆置单链表

    ## 问题描述 > 试编写在带头结点的单链表就地逆置,所谓"就地"是指辅助空间为O(1) ## 算法思想1 > 将头结点摘下,然后从第一个结点开始,依次插入到头节点的后 ...

  2. 习题 11.10 将本章11.8节中的程序片段加以补充完善,成为一个完整的程序。在程序中使用继承和组合。在定义Professor类对象prof1时给出所有数据的初值,然后修改prof1的生日数据。。。

    C++程序设计(第三版) 谭浩强 习题11.10 个人设计 习题 11.10 将本章11.8节中的程序片段加以补充完善,成为一个完整的程序.在程序中使用继承和组合.在定义Professor类对象pro ...

  3. 《精通QTP——自动化测试技术领航》—第1章1.3节录制与回放—QTP的开关

    本节书摘来自异步社区<精通QTP--自动化测试技术领航>一书中的第1章1.3节录制与回放-QTP的开关,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区"异步社区"公 ...

  4. 《术以载道——软件过程改进实践指南》—第1章1.1节对CMMI的基本认识

    本节书摘来自异步社区<术以载道--软件过程改进实践指南>一书中的第1章1.1节对CMMI的基本认识,作者任甲林,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第 ...

  5. 《Nmap渗透测试指南》—第1章1.2节Windows下安装Nmap

    本节书摘来自异步社区<Nmap渗透测试指南>一书中的第1章1.2节Windows下安装Nmap,作者 商广明,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1. ...

  6. 【v2.x OGE-example 第二章(第二节) 修改器的使用】

    2019独角兽企业重金招聘Python工程师标准>>> [v2.x OGE-example 第二章(第二节) 修改器的使用] 1. 位置:Modifier_example --> ...

  7. 计算机网络离不开光缆,九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt...

    九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt 第二十一章信息的传递,第四节越来越宽的信息之路,1微波的性质更接近光波,大致沿_______传播,需要每隔_____k ...

  8. 《人脸识别原理及算法——动态人脸识别系统研究》—1章1.2节人脸识别相关学科的进展...

    本节书摘来自异步社区<人脸识别原理及算法--动态人脸识别系统研究>一书中的1章1.2节人脸识别相关学科的进展,作者 沈理 , 刘翼光 , 熊志勇,更多章节内容可以访问云栖社区"异 ...

  9. 《敏捷迭代开发:管理者指南》—第2章2.9节增量交付

    本节书摘来自异步社区<敏捷迭代开发:管理者指南>一书中的第2章2.9节增量交付,作者[美]Craig Larman,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

最新文章

  1. CSS改变nth-child()和nth-last-child()的参数灵活选择元素编号
  2. windowsXP用户被禁用导致不能网站登录
  3. POJ 1144 Network (求割点)
  4. 《麻省理工科技评论》:2018年18大科技趋势,2017年7大失败技术
  5. 21、 TRUNCATE:清空表记录
  6. 日常生活小技巧 -- U盘拷贝时提示文件过大问题
  7. 在面试中如何展示虚拟机和内存调优技能
  8. SAP Spartacus 关于列表点击focus Accessibility的需求
  9. 爱立信:5G将加速物联网发展
  10. 介绍一种 Python 更方便的爬虫代理池实现方案
  11. php 读取excel转数组中,thinkphp5使用PHPExcel读取excel csv到数组
  12. apache目录 vscode_CentOS 上使用vscode 调试百度大数据分析框架Apache Doris BE
  13. codeforces round div2,3周赛补题计划(从开学到期末)
  14. 超神学院暗物质计算机,超神学院之进击的赛亚人
  15. 2021年4月-(计算机网络)小型校园网络模拟搭建,最全最准确版!!!!!
  16. Hibernate5使用c3p0一些小问题及注意
  17. java计算机毕业设计红色主题旅游网站源码+mysql数据库+系统+lw文档+部署
  18. python培训班一般多少钱-Python培训班多少钱
  19. 对于一个大数据应用项目/产品的落地,可以大致总结为五大步骤阶段?
  20. 借助云开发,利用订阅消息,云函数路由实现小程序好友一对一聊天,添加好友等仿微信功能

热门文章

  1. C++中序列化对象并存储到mysql
  2. TensorFlow 中 identity 函数理解
  3. bat从数组中找出相同数字并删除_全网把Map中的hash()分析的最透彻的文章,别无二家...
  4. 去哪儿-05-recommendDev
  5. 批量从网上下载图片、zip等文件到本地[java爬虫]
  6. Arm开发板内核驱动模块--Helloworld及Makefile
  7. db2 语句包括不必要的列表_列表推导和生成器表达式的滥用
  8. 算法竞赛中的输入输出框架
  9. Linux学习笔记9
  10. mysql数据字典生成器_「python技术」列表推导、生成器表达式和字典推导的差异及其示例