1、数据结构课程设计报告数据结构课程设计报告 提交日期:提交日期: 8 月月 20 日日 成绩:成绩: 指导老师:指导老师: 实验题目:实验题目: 内排序算法比较 问题解析(对问题的分析、理解和解题方法) :问题解析(对问题的分析、理解和解题方法) : 1. 伪随机数的产生是由 time. h 头文件,以rand(time(0)为随机种子的函数rand()产生,可以保持数 据的无序性。 2. 生成三种文件,分别保存正序.逆序.和随机产生的数据,并在程序执行过程中可选择用某一文件中 的数据。 3. 用类涵盖六种排序算法的内部操作,并定义数组元素类。 4. 输入以文件的方式来进行,必须保证对六种排序算
2、法的输入数据是一样且连续的。 5. 对于比较次数的统计加在比较判断的前边,在判断失败时也能统计到比较次数。 6. 对于存在递归的快速排序和存在子函数的堆排序的比较次数. 移动次数统计采用以引用做函数参数。 数据结构选择数据结构选择: 选用动态数组为内部基本运算结构,外部数据选用文件。 算法设计算法设计: 构建动态数组元素类,六种排序操作.输出操作为该类的函数,输入操作包含在构造函数中。 需求分析:需求分析: 外部数据只可以手动输入随机数的个数。程序运行中可选择采用多种文件用各种算法测试多次。 程序主线:程序主线: 产生正序文件f1.txt,倒序文件f2.txt,并生成三个随机文件f3.txt
3、f4.txt f5.txt。选择将某一文件导 入程序,进行排序,并测试各种算法的移动和比较次数。最后对结果进行分析。 任务分工、进度计划:任务分工、进度计划: 周一:六种排序算法嵌入各主程序,并进行初步测算。 周二:主要解决程序文件输入,输出问题和各函数的接口问题。 周三:对程序进行调整,解决部分错误输出。 用户手册:用户手册: 用户需要选择是否生成新的文件,还需要外部输入待排序数组元素个数即可,程序运行中用户可选择用 某一文件进行排序。 测试结果:测试结果:请输入排序元素请输入排序元素个数个数: 10000 请输入读入何种待排序文件请输入读入何种待排序文件:(0:正序:正序 1:逆序:逆序
4、2:随机文件:随机文件 1 3:随机文件:随机文件 2 4:随机:随机 文件文件 3) 0 Bubble:比较次数比较次数=9999 移动次数:移动次数:=0 InsertSort:比较次数比较次数=9999 移动次数:移动次数:=19998 SSort:比较次数比较次数=49995000 移动次数:移动次数:=29997 QSort:比较次数比较次数=19998 移动次数:移动次数:=39996 ShellSort:比较次数比较次数=120009 移动次数:移动次数:=240018 HeapSort:比较次数比较次数=264502 移动次数:移动次数:=394251 是否是否继续测试继续测试:(按任意键继续,按按任意键继续,按 0 退出退出:) 1 请输入排序元素个数请输入排序元素个数: 10000 请输入读入何种待排序文件请输入读入何种待排序文件:(0:正序:正序 1:逆序:逆序 2:随机文件:随机文件 1 3:随机文件:随机文件 2 4:随机:随机 文件文件 3) 1 Bubble:比较次数比较次数=49995000 移动次数:移动次