logo资料库

数据结构课程设计报告 综合排序.doc

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
课 程 设 计 课程设计名称: 排序综合 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2010.6.21-2010.6.25
学生姓名 题 目 课题性质 指导教师 主要内容 计算机科学与技术 专业课程设计任务书 专业班级 学号 A.工程设计 排序综合 课题来源 同组姓名 D.自拟课题 无 综合应用所学知识,设计完成一个排序综合系统。本系统拟实现以下功能: 1.直接插入排序 2.希尔排序 3.快速排序 4.堆排序 5.结果保存 6.计算排序时间 系统要求采用 VC6.0 工具进行开发实现。 综合运用和融化所学理论知识,提高分析和解决实际问题的能力,使用 c 语 任务要求 言设计一个排序综合系统。 完成课程设计报告,报告中对关键部分给出图表说明。要求格式规范,工作 量饱满。 参考文献 [1] 数据结构. 严蔚敏,吴伟民 编著. 清华大学出版社. 2007 年 03 月 [2] 数据结构、算法与应用:C++语言描术. (美)萨尼(Sahni,S.) 著,汪 诗林 等译. 机械工业出版社.2005 年 03 月 审查意见 指导教师签字: 教研室主任签字: 2010 年 6 月 24 日 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页
信息科学与工程 学院课程设计成绩评价表 课程名称:数据结构课程设计 设计题目:排序 序号 评审项目 分 数 满分标准说明 1 2 3 4 5 6 7 总 分 综 合 意 见 内 容 创 新 思路清晰;语言表达准确,概念清楚,论点正确;实验方法科 学,分析归纳合理;结论严谨,设计有应用价值。任务饱满, 做了大量的工作。 内容新颖,题目能反映新技术,对前人工作有改进或突破,或 有独特见解 完整性、实用性 整体构思合理,理论依据充分,设计完整,实用性强 数据准确、可靠 数据准确,公式推导正确 规 范 性 设计格式、绘图、图纸、实验数据、标准的运用等符合有关标 准和规定 纪 律 性 能很好的遵守各项纪律,设计过程认真; 答 辩 准备工作充分,回答问题有理论依据,基本概念清楚。主要问 题回答简明准确。在规定的时间内作完报告。 指导教师 年 月 日
1、 需求分析 1.1、直接插入排序 思路:设有一组关键字{K1,K2,…….,Kn},排序开始变认为 K1 是一个有序的序列, 让 K2 插入到表长为 1 的有序序列,使之成为一个表长为 2 的有序序列, 让 K3 插 入到表长为 2 的有序序列,使之成为一个表长为 3 的有序序列,依次类推,最后让 Kn 插入上述表长为 n-1 的有序序列,得到一个表长为 n 的有序序列. 1.2、希尔排序 思路:先取一个正整数 d1(d1=1),即所有记录成为一个组为此.一般选 d1 约为 n/2,d2 为 d1/2,…….,di=1 1.3、快速排序:(递归和非递归) 思路:以第一个关键字 K1 为控制字,将[K1、K2、….Kn]分成两个子区,使左区 的有关键字小于等于 K1,右区所有关键字大于等于 K1,最后控制居两个子区中 间的适当位置。在子区内数据尚处于无序状态。 将右区首、尾指针保存入栈,对左区进行与第(1)步相类似的处理,又得到它 的左子区和右子区,控制字区中。 重复第(1)、(2)步,直到左区处理完毕。然后退栈对一个个子区进行相类似的 处理,直到栈空 分区处理函数 hoare 思路:首先用两个指针 i、j 分别指向首、尾两个关键字,i=1,j=8。如对(46、56、 14、43、95、10、19、72)。第一个关键字 46 作为控制字,该关键字所属的记录 另存储在一个 x 变量中。从文件右端元素 r[j].key 开始与控制字 x.key 相比较,
当 r[j].key 大于等于 x.key 时,r[j]不移动,修改指针 j,j--,直到 r[j].key #include #include #include 2.2 、ADT struct element { int key; }list[20]; struct rnode {
int key; int point; }; 2.3、各种操作函数: (1)创建一个数组函数:int creat(); (2)输出数组函数:void print(struct element a[20],int n); (3)保存函数:void save(struct element a[SIZE],int n, char fileName[] ) (4)直接插入排序函数:void insert_sort(element a[], int n) (5)希尔排序函数:void shell(struct element a[20],int n); (6)快速排序函数(分区处理函数):int hoare(struct element a[20],int l,int h); (7)非递归的快速排序函数:void quick1(struct element a[20],int n); (8)递归的快速排序函数:void quick2(struct element a[20],int l,int h); (9)堆排序(调整堆的函数):void heap(struct element a[20],int i,int m); (10)堆排序(主体函数):void heapsort(struct element a[20],int n); (11)时间函数:start = clock();end = clock(); 2.4、主函数 Void main() { 接受命令(选择要执行的操作); 处理命令; 输出结果; } 3、 详细设计 3.1、程序源代码: #include #include #include #include
#define SIZE 1000000 struct element { int key; }list[SIZE]; ///////创建一个数组//////// int creat() { int i,n; int num; n=0; printf("请输入元素个数:"); scanf("%d",&num); for( i = 0;i < num; i++ ) { list[n].key = rand() % 10000; n++; } return(n); } /////////////输出数组///////////// void print(struct element a[SIZE],int n)
{ } int i; for(i=0;i
分享到:
收藏