实验一 简单算法设计

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

实验一简单算法设计

一.实验目的和要求

1. 理解算法设计与分析的基本概念,理解解决问题的算法设计与实现过程;

2. 掌握简单问题的算法设计与分析,能设计比较高效的算法;

3. 熟悉C/C++语言等的集成开发环境,掌握简单程序设计与实现的能力;

二.实验内容

(一)相等元素问题

1.问题描述先排序函数,再查找函数。

#define size 100

Typedef strat

{

Int Array[size]

Int listlength

}List

List a;

Main()

{

1、输入

2、排序

3、查找

4、输出

}

元素唯一性问题:给出一个整数集合,假定这些整数存储在数组A[1…n]中,确定它们中是否存在两个相等的元素。请设计出一个有效算法来解决这个问题,你的算法的时间复杂性是多少?

2. 测试数据

输入:

9 71 25 64 38 52 5 31 19 45

26 35 17 92 53 24 6 57 21 12 34 2 17 86 75 33

15 87 32 7 84 35 26 45 78 96 52 22 37 65 9 43 21 3 33 91

输出:No

Yes

No

3. 设计与实现的提示

算法最坏情况和平均情况的时间复杂性是衡量算法优劣的重要指标,算法设计要求尽可能设计比较高效的算法。

(二) 整数集合分解(选做)

1.问题描述

设计算法把一个n个元素的整数集合(n为偶数)分成两个子集S1和S2,使得:每个新的集合中含有n/2个元素,且S1中的所有元素的和与S2中的所有元素的和的差最大。

2. 测试数据

输入:

68 25 34 16 2 37 3 95 76 57 21 13 4 78 29 6 17 39 51 20 43 12

28 3 48 59 14 32 47 51 42 61 9 24 52 78 65 2 37 78 51 73 29 7 26 95 37 2

输出:

2 3 4 6 12 13 16 17 20 21 25

29 34 37 39 43 51 57 68 76 78 95

2 2

3 7 9 1

4 24 26 28 29 32 37 37

42 47 48 51 51 52 59 61 62 65 73 78 95

3. 设计与实现的提示

本题可以有多种方法。算法时间复杂性是选取算法的重要依据。输出的两个新整数集合要求按照从小到大排序后输出。该排序步骤对算法时间复杂性的影响在此不计。

相关文档
最新文档