实验1 分治法的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验1 分治法的应用

1.实验目的

(1)理解分治法的思想。

(2)掌握用分治法解决问题

2.实验类型

设计型

3.预习要求

熟悉Visual C++ 6.0上机编程调试的基本方法。掌握教材上分治法的思想。

4.实验基本要求

(1)仔细阅读实验的题目,选择其中的两个题目完成,设计的程序要满足正确性,代码中有关键的注释,书写格式清晰,简洁易懂,效率较高,适合各种合理输入,并能对不合理输入做出正确的提示。

(2)实验题目:

a)最大值次大值

★问题描述

输出n个数中的最大值和次大值(注意:不能用排序)

★编程任务

利用分治法策略设计一个算法对任意输入的n个数可以输出最大值和次大值★数据输入

第一行输入数的个数n,第二行输入n个数

★结果输出

输出最大值和次大值。

输入示例输出示例

3 3 2

2 1 3

★实现提示

最大数是两组中的最大值中较大的值,次大值是从两组中较小的最大值和另一组的次大值选取。

b)查找第K小元素

★问题描述

在n个数当中找第K小元素问题。

★编程任务

利用分治策略试设计一个算法对任意的n个数构查找第K小元素,不能用排序。

★数据输入

第一行输入n的值,第二行输入n个数,第三行输入K的值。

★结果输出

程序运行结束时,输出第K小元素的值。

输入示例输出示例

6

5

8 1 3 6 9

3

★实现提示

使用快速排序中所采用的分划方法。

c)中位数问题

★问题描述

设X[ 0 : n - 1]和Y[ 0 : n– 1 ]为两个数组,每个数组中含有n个已排好序的数。找出X和Y的2n个数的中位数。

★编程任务

利用分治策略试设计一个算法求出这2n个数的中位数。

★数据输入

第1行中有1个正整数n(n<=200),表示每个数组有n个数。接下来的两行分别是X,Y数组的元素。

★结果输出

程序运行结束时,将计算出的中位数输出。

输入示例输出示例

14

3

5 15 18

3 1

4 21

★实现提示

比较两个序列的中位数大小,如果两个数相等,则该数为整个2n个数据的中位数,否则通过比较,分别减少两个序列的查找范围,确定查找的起止位置,继续查找。

按照指定的格式书写实验报告,实验报告清晰,但不赘述,字体最大为四号。在实验结束一周内上交实验报告。

5.实验基本步骤

(1)选定实验题目,仔细阅读实验要求,设计好输入输出,按照分治法的思想构思算法,选取合适的存储结构实现应用的操作。

(2)设计的结果应在Visual C++ 实验环境下实现并进行调试。

(3)请完成实验报告的编写,实验报告中要有详细的测试记录,包括各种可能的测试数

据。

相关文档
最新文档