第二章实验报告

一、题目:

7-3 两个有序序列的中位数。

二、问题描述:

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

三、算法描述:

首先要对两个等长数组进行重新排序,可以考虑直接合并再排序或者新建一个数组进行排序。合并再排序要多次移动数据,运算次数较多,因此我选择了新建一个数组,边导入数据边进行排序。

因为两个等长数组的排列是有规律的(由小到大),所以我可以直接比较两个数组的第一个数的大小,然后选择较小的一个放到新的数组中,然后被取出数据的那个数组的第二个数与另一个数组的第一个数比较,依然是取出较小的一个,以此重复,直到两个数组中的所有元素均被取出。

四、算法时间及空间复杂度分析

时间复杂度:

最好的情况:当一个数组中的全部元素均小于另一个数组的第一个数时,比较次数为N。

最坏的情况:当两个数组中的元素全都有交错时每两个元素都要进行一次比较,比较次数为2N。

所以时间复杂度为O(N)。

空间复杂度:

会随数组长度的增加而等量增加,O(N)

五、心得体会

该算法简答易行,容易设计,但是时间复杂度和空间复杂度相对较高,以后需要在老师的指导下,重新斟酌算法,做出时间和空间复杂度更低的算法。

原文地址:https://www.cnblogs.com/RainParrot/p/9784045.html

时间: 2024-07-31 09:42:55

第二章实验报告的相关文章

算法第二章实验报告

实践题目:二分查找. 问题描述:输入n值(1<=n<=1000).n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 算法描述: int BinarySearch(int a[],int x, int n){//在数组a[i]中查找X,找到返回X在数组的位置,否则返回-1 int left = 0; int right = n-1; int count = 0;//设数组位置左边为0:右边为n-1;定义cou

2019春第二次实验报告

2019春第二次实验报告 一.实验项目名称 空战游戏 二.实验项目功能描述 在第一次实验基础上增加多台敌机,在一定的得分后发散导弹 三.项目模块结构介绍 四.实现界面展示 五.代码托管链接 https://gitee.com/wenyizhang999/ZWY/blob/master/空战游戏.cpp 六.实验总结 问题:创造无限循环模式 解决方法:编代码,未完成 总结:游戏规模越来越大,玩法越来越多,无限的空间待开发,觉得自己能完成一个游戏的开发太不容易,团队很重要. 原文地址:https:/

java第二次实验报告

课程:Java实验   班级:201352     姓名:黄坤  学号:2015226 成绩:           指导教师:娄佳鹏     实验日期:15.05.05 实验密级:         预习程度:       实验时间: 仪器组次:         必修/选修:选修    实验序号:2 实验名称:java面向对象程序设计 实验目的与要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5.

java程序设计第二次实验报告

北京电子科技学院(BESTI) 实验报告 课程:数据结构    班级:1352    姓名:何伟钦     学号:20135223 成绩:            指导教师:娄嘉鹏      实验日期: 2015.5.6 实验密级:         预习程度:             实验时间:5:30-10:00 仪器组次:23   必修/选修:必修       实验序号:02 实验名称:Java面向对象程序设计 实验目的与要求:1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.

java第二次实验报告20135231

Java实验报告二:Java面向对象程序设计 20135231 何佳 实验要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 实验内容: (一)单元测试 (二)面向对象三要素 (三)设计模式初步 (四)练习 实验步骤: (一)单元测试     (1) 三种代码 编程是智力活动,不是打字,编程前要把干什么.如何干想清楚才能把程序写对.写好.与目前不少同学一说编程就打开编辑器写代码不

20135239益西拉姆第二次实验报告

实验二   java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 实验步骤 (一)单元测试 (1) 三种代码 编程是智力活动,不是打字,编程前要把干什么.如何干想清楚才能把程序写对.写好.与目前不少同学一说编程就打开编辑器写代码不同,我希望同学们养成一个习惯,当你们想用程序解决问题时,要会写三种码: 伪代码 产品代码 测试代码 我们通过一个例子说明如何写

软件工程综合实践的第二次实验报告

队伍:阙定1757127,李铮达1759118 这次是软件工程综合实践的第二次实验,本次任务是结对编程,就是找一个小伙伴一起写代码,一人写代码一人复审代码,这样可以更快的找出代码的错误,然后立即更改,提高开发效率. 下面是老师发布的任务截图 讨论分析 拿到任务后,我们先考虑用哪种编程语言来写,直接用较为基础的C或C++编写即可,因为逻辑较为简单,且不需要涉及面向对象的问题.然后开始分析用什么方法来实现,以及如何实现.讨论持续了一整天,因为白天有课,所以我们都是用零星的时间来讨论的. 下面是周二中

第六章 实验报告 (函数与宏定义)

C程序设计实验报告 实验项目: 6.4.1.1编写由三角形三边求面积的函数 6.4.1.2编写求N的阶层 6.4.1.3求两个整数的最大公约数 6.4.1.4打印输出的指定图形 6.4.2.1模块化程序设计 姓名:杨婷 实验地点:教学楼514教室 实验时间:2019年4月30日 一.实验目的与要求 <1>6.4.1.1编写由三角形三边求面积的函数 调用area()函数求三角形的面积 在求面积函数中运用海伦公式 <2>6.4.1.2编写求N的阶层 定义符号常量 使用长整型变量存放累乘

第六章实验报告

C程序设计实验报告 实验项目: 函数和宏定义实验 姓名: 王雨晴 实验地点: 514物联网实验室 实验时间:2019年4月30日 一.实验目的和要求 1.掌握函数的定义方法和调用规则. 2.掌握C语言程序中主调函数和被调用函数之间进行数据传递的规则. 3.了解函数的返回值及其类型,并正确使用它. 4.了解局部变量和 全局变量的作用域及它们与储存分类的关系,理解变量的存在性和可见性的概念. 5.练习递归函数的使用. 6.理解宏观的概念,掌握定义无参宏和带 参宏的方法.了解文件包含的概念,掌握其用法