[关键词] 数据结构;抽象数据类型;排序算法;Java
2.2 算法
算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量 [11]。
3 项目分析
3.1 项目总体概述
该项目分为两大模块:抽象数据类型模板库和常用算法模板库。抽象数据类型模板库包括了:顺序表、单链表、栈、队列和二叉链表。常用算法模板库主要是由几个常用排序算法构成,包括:直接插入排序、冒泡排序、简单选择排序、快速排序和堆排序。
3.2 需求分析
3.2.1 用户需求
• 每个数据类型的软件模块通常应包含定义、表示和实现三个部分;
• 数据类型名称及排序算法的名称严格按照《数据结构》书上的标准命名,方便使用;
• 代码中有足够且清晰的注释,便于学习和教学;
• 程序可读性强、健壮且高效,可直接调用。
3.2.2 性能需求
操作简单方便、稳定性高,尤其是一些接口的设计方便以后的扩展,可以极大地提高编码人员的工作效率和,将编码人员从繁琐的编码中解脱出来。
3.2.3 其他需求
在代码部分,需要对线性表、单链表、栈、队列和二叉链表等做出详细的定义和注释;最后,作为我们设计的“JDK部分”,方便使用者对该模板库的了解和操作,最后给出了每个模块的详细操作说明书,让使用者更好地掌握并使用该系统。
3.3 可行性分析
可行性分析的任务是从技术上、经济上、操作上分析解决的问题是否可行。可行性研究的目的就是用最小的代价在尽可能短的时间内确定系统目标和规模是否可行,是否能够解决,是否值得解决。
3.3.1 技术条件方面的可行性
根据该模板库的功能、性能及实现系统的各项约束条件和系统目标来衡量,所需的技术java编程基础已经具备。虽然没有学过Java版数据结构,但曾修过C语言版数据结构,对顺寻表、单链表、栈、队列、二叉链表都有所了解,思想都是相通的。对使用的开发工具JCreator、Myeclipse也较熟悉,利用现有的技术条件完全可以达到该项目所要实现的功能目标。同时,该项目的开发时间较为充裕,预计可以在规定期限内完成开发。
3.3.2 硬件条件方面的可行性
计算机已经安装有所有必备的软件及相应的软件测试设备,各项条件良好。
3.3.3 操作方面的可行性
各个模块完成后封装,用户使用该类库时只需在所建工程中直接导入该JAR包,就可以直接使用,方便简单。
目 录
1 绪论 1
1.1 开发背景与意义 1
1.2 项目目标 3
1.3 开发现状 3
1.4 开发环境 3
1.5 开发过程 3
2 背景知识介绍 4
2.1 抽象数据类型(ADT) 4
2.2 算法 4
3 项目分析 5
3.1 项目总体概述 5
3.2 需求分析 5
3.2.1 用户需求 5
3.2.2 性能需求 5
3.2.3 其他需求 5
3.3 可行性分析 5
3.3.1 技术条件方面的可行性 5
3.3.2 硬件条件方面的可行性 6
3.3.3 操作方面的可行性 6
3.3.4 社会因素方面的可行性 6
3.3.5 市场因素方面的可行性 6
3.4 项目目标 6
4 设计 6
4.1 项目结构 6
4.1.1 总体功能模块图 6
4.1.2 功能各模块简单介绍 7
4.2 设计的总体思路 7
4.3 详细设计 8
4.3.1 抽象数据类型模板库设计 8
4.3.2 排序算法模板库设计[15] 12
4.4 模板库操作详述 14
4.4.1 顺序表SqList方法摘要 14
4.4.2 单链表LinkList方法摘要 14
4.4.3 栈SqStack方法摘要 15
4.4.4 队列SeqQueue方法摘要 15
4.4.5 二叉链表方法摘要 15
5 类库发布和测试 16
5.1 发布类库 16
5.2 使用类库 17
5.3 测试环境 17
5.4 测试的基本原则 17
5.5 测试的重要性和目的 18
5.5.1 测试的重要性 18
5.5.2 测试的目的 18
5.6 测试的步骤 18
5.7 测试的主要内容 18
5.8 部分过程测试结果 19
5.8.1 顺序表测试结果: 19
5.8.2 直接插入排序测试结果: 20
5.8.3 冒泡排序测试结果: 20
5.8.4 简单选择排序测试结果: 20
5.8.5 快速排序测试结果: 21
5.8.6 堆排序测试结果: 21
5.8.7 在MyEclipse中新建测试工程并导入JAR包 21
5.9 测试结论 22
结束语 23
参考文献 24
致谢 25