没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
内蒙古科技大学课程设计论文
内蒙古科技大学课程设计任务书
课程名称 数据结构课程设计
设计题目
排序算法集成
指导教师 时间 2010.6.21-2010.6.29
一、教学要求
1. 掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力
2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能
3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力
4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方
法和作风
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
排序算法集成
定义动态数组类(或类模板)以表示待排序数据,在此基础上实现多种排序算法。
要求设计函数模板来实现下列排序算法:
直接插入排序
冒泡排序
简单选择排序
希尔排序
快速排序
堆排序
并设计主函数测试动态数组类(或类模板),测试各排序算法的函数模板。
三、设计要求及成果
1. 分析课程设计题目的要求
2. 写出详细设计说明
3. 编写程序代码,调试程序使其能正确运行
4. 设计完成的软件要便于操作和使用
5. 设计完成后提交课程设计报告
四、进度安排
资料查阅与讨论(1 天)
系统分析(2 天)
系统的开发与测试(5 天)
编写课程设计说明书和验收(2 天)
五、评分标准
1. 根据平时上机考勤、表现和进度,教师将每天点名和检查
2. 根据课程设计完成情况,必须有可运行的软件。
3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问
六、建议参考资料
1.《数据结构 (C 语言版)》严蔚敏、吴伟民 主编 清华大学出版社 2004.11
2.《数据结构课程设计案例精编(用 C/C++描述)》,李建学 等 编著,清华大学出版社 2007.2
1
内蒙古科技大学课程设计论文
3.《数据结构 : 用面向对象方法与
C++ 语言描述 》,殷人昆 主编, 清华大学出版社 2007.6
目 录
I.论文题目分析
1.论文题目:排序算法集成
2.题目要求
定义动态数组类(或类模板)以表示待排序数据,在此基础上实现多种排
序算法。
要求设计函数模板来实现下列排序算法:
直接插入排序
冒泡排序
简单选择排序
希尔排序
快速排序
堆排序
并设计主函数测试动态数组类(或类模板),测试各排序算法的函数模板。
3.问题的描述
在实际中很多地方都要用到数据的排序,如:学生考试成绩要排序,超市
商品要按名字排序,字典的检索表,学生的基本信息要按学号排列等等,这些
都需要用到排序。但排序的方法很多,思路也各不相同,要在不同的要求场所,
要选择不同的排序的方法,以达到高效的排序。所以要认真的分析每种排序算
法,掌握各自的思路,合理运用于实践中。
4.设计思路
要更好的完成本次课程设计,就线必须做好题目的分析。从题目的要求来
看,C++是本次设计的运用语言。主要实现六种方法排序,但是每种排序的思
2
内蒙古科技大学课程设计论文
想也是不同的,所以要对每种排序都要仔细的分析。
首先,要求是定义动态数组类表示待排数据,所以要动态的分配空间。因
此,定义一个结构体(struct)以存放待排的数据及其相关信息。因为待排数据
的个数并不确定,要能给不同的个数的数据都能排序,也要不浪费计算机的空
间,可以通过 malloc 函数动态的分配相应的空间。要
其次,实现六种排序。这六种排序的存储结构是完全相同的,其数据的初
始化函数和排序后的输出函数都是完全相同的,所以实现这两部是比较简单的。
但是对于各自的排序算法,是各不相同的,在理论分析中会做具体的分析和说
明。
II.设计步骤
1.程序的功能
该程序主要完成数据的排序功能。首先,采用模拟菜单进行执行程序。其
次,把程序模块化,每种排序的方法各不相同,本程序主要分八大模块。如图
1.1 所示:
六
种
排
序
算
法
快
速
排
序
法
冒
泡
法
排
序
直
接
插
入
排
序
法
简
单
选
择
排
序
希
尔
排
序
堆
排
序
程
序
退
出
3
主程序
内蒙古科技大学课程设计论文
图 1.1
2.功能实现
本次课程设计主要是运用 C++语言来实现的,因此类是考虑的重点。应该
围绕怎样通过类来实现六种排序,这是设计的思想。
怎样来设计这个排序类是很关键的,类中的数据成员的设计和成员函数的
设计是设计的主要点,同时要考虑到动态分配的思想;其次就是各种排序的算
法思想也是重要的;再者就是模拟菜单的设计,这是程序能重复执行的关键。
因此,这次设计主要围绕排序类设计,六种排序算法的设计,以及模拟菜单
的设计。
III.设计理论及分析方法
程序设计一般由两部分组成:算法和数据结构,合理的选择和实现一个数据
结构与处理这些数据结构具有同样的重要性。
1.数据存储结构
⑴ 对于每种排序都必须先把数据存储起来,才能进行排序,但是对于待排
的数据个数并不能确定,所以采用动态分配(new 分配)的方法。因此可以定
义一个结构体如下:
template < class T >
struct SqList
{
T key;
};
⑵ 本次课程设计采用是 C++语法,设计了一个排序类模板,类模板如下:
template < class T >
class array
{ private:
SqList<T> *r;
int length;
public:
array();//默认构造函数
array(array &L);//拷贝构造函数
4
内蒙古科技大学课程设计论文
~array()//析构函数
{ delete r; }
void Intput();//录入函数
void Display();//输出函数
void QuickSort();//快速排序
int Partition( array &L, int low, int high);
void QSort ( array &L,int low, int high);
};
但是,对于类的设计,可以设计一排序基类,然后派生出留个排序类。这
样有七个类,非常的复杂,程序的实现和应用上也不较难,也不容易理解,这
是不符合程序设计简单、易于理解的要求。因此,我们这一设计一个类,把所
各自排序函数设计为类的成员函数。例如:快速排序函数 void QuickSort(); int
Partition( array &L, int low, int high); void QSort ( array &L,int low, int high);把它们
设计为类的成员函数。
基于这种思想,我们可以把其他五种排序函数都设为类的成员函数。就是
把冒泡法排序 void BubbleSout(); void Bubble( array &L); 简单选择排序 void
SimpleSort(); int SelectMinKey( array &L,int i); void SelectSort( array &L); 直接插
入排序 void InsertionSort(); void InSort( array &L); 希尔排序 void ShellSort(); void
ShellInsert( array &L, int dk ); void Shell( array &L); 堆排序 void HeapSort();void
HeapAdjust(array &H, int s, int m); void Heap( array &H); 等都作为类的成员函数。
这样,可能类的成员过多,但是整个程序只有一个类,所有的操作都是对类进
行的,程序实现起来也比较容易。此外,为了简洁的测试六种排序,可以做一
个综合六种排序得到函数 void SixSort(),把其也作为类的一个成员函数。这样
程序的所有功能都可以较好的实现。
2.算法的设计
算法的设计是程序实现的前提,好的算法才能更高效的完成其要求。对于类
中排序成员函数,应该先从算法设计开始。
(1) 快速排序算法
快速排序是对冒泡排序的一种改进。其基本思想是,从待排序列中任取一
5
剩余37页未读,继续阅读
资源评论
- 光与火花2023-07-25文件提供了大量的示例代码和实际案例,有助于巩固所学知识并应用到实际问题中。
- 洪蛋蛋2023-07-25作者对排序算法的解析十分清晰,让我能够轻松理解每个算法的原理和应用。
- 战神哥2023-07-25排序算法这个主题够简洁明了,没有过于冗长的内容,正好适合快速了解和学习。
- kdbshi2023-07-25文件内容丰富,详细介绍了不同种类的排序算法,很适合初学者学习理解。
- 王向庄2023-07-25这个文件对于学习数据结构课程中的排序算法有很大帮助。
流云1000
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功