1、 信息科学与技术学院信息科学与技术学院 数据结构课程设计报告数据结构课程设计报告 完成日期:1111 题目名称: 排排 序序 综综 合合 专业班级: 学生姓名: 学生学号: 指导教师: 目目 录录 1 课程设计的目的课程设计的目的 4 1.1 课程设计的目的. 4 1.2 课程设计的题目. 4 1.3 题目要求 4 2 概要设计概要设计 . 5 2.1 存储结构 5 2.2 基本操作 5 3 详细设计详细设计 . 6 3.1 流程图 . 6 3.2 源程序 . 12 4 测试测试 22 4. 1 主菜单 22 4. 2 插入排序功能 . 23 4.3 选择排序功能 23 4.4 冒泡排序功能
2、24 4.5 快速排序功能 24 4.6 合并排序功能 25 4.7 5 种排序方法比较 26 5 课程设计课程设计总结总结 . 27 6 参考书目:参考书目: 27 1 课程设计的目的课程设计的目的 1.1 课程设计的目的课程设计的目的 数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操 作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和 计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、 操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程 等各种领域。 学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对
3、 它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能 力和专业素质的提高。通过此次课程设计主要达到以下目的: 了解并掌握数据结构与算法的设计方法,掌握数组、链表、队列、堆栈、 树等基本数据结构,具备初步的独立分析和设计能力; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方 法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所 应具备的科学的工作方法和作风。 1.2 课程设计的题目课程设计的题目 排序综合,利用随机函数产生 N 个随机整数(20000 以上) ,对这些数进行多
4、 种方法进行排序。 1.3 题目要求题目要求 要求: 1) 至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、 希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序) 。并把 排序后的结果保存在不同的文件中。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对 比) ,找出其中两种较快的方法。 3) 如果采用 4 种或 4 种以上的方法者,可适当加分。 2 概要设计概要设计 2.1 存储结构存储结构 定义的主要的数据: (1):class SortableSList public: SortableSList(); void InsertSort(); vo
5、id SelectSort(); void BubbleSort(); void QuickSort(); void MergeSort(); void QuickSort(int left,int right); int QSort(int left,int right); void Merge(int left,int right1,int right2); int *I,*S,*Q,*B,*M; int n; ;声明的类对象 d; (2):int a5,b5,c5, 分别记录比较次数,交换次数,移动次数; (3): long int a15; /记录排序所用的时间 (4) int a25
6、; /记录排名 2.2 基本操作基本操作 (1):void SortableSList:BubbleSort(); 冒泡排序: (2):void SortableSList:InsertSort(); 直接插入排序 (3):void SortableSList:MergeSort(); 合并排序 (4):void SortableSList:QuickSort(); 快速排序 (5):void SortableSList:SelectSort(); 简单选择排序 3 详细设计详细设计 3.1 流程图流程图 主流程图: P= =0 P=1 p=2 p=3 p=4 p=5 P=6 流程图-1 开始 定义对象,变量 输入要比较的数的个数 n 判断输入的 p 插 入 排 序 选 择 排 序 冒 泡 排 序 快 速 排 序 合 并 排 序 时 间 效 率 比 较 进入菜单,输入功能选项序号 p 执行完相应操作并输出结果后,按任意键返回菜单 结束 子流