数据结构课程设计1_计算机-数据结构与算法

上传人:s9****2 文档编号:568531461 上传时间:2024-07-25 格式:PDF 页数:42 大小:1.06MB
返回 下载 相关 举报
数据结构课程设计1_计算机-数据结构与算法_第1页
第1页 / 共42页
数据结构课程设计1_计算机-数据结构与算法_第2页
第2页 / 共42页
数据结构课程设计1_计算机-数据结构与算法_第3页
第3页 / 共42页
数据结构课程设计1_计算机-数据结构与算法_第4页
第4页 / 共42页
数据结构课程设计1_计算机-数据结构与算法_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《数据结构课程设计1_计算机-数据结构与算法》由会员分享,可在线阅读,更多相关《数据结构课程设计1_计算机-数据结构与算法(42页珍藏版)》请在金锄头文库上搜索。

1、 . I . . r . . 课 程 设 计 说 明 书 课程名称: 数据结构和算法 设计题目: 多种排序 院 系: 计算机科学与信息工程学院 学生: 学 号: 专业班级: 计科嵌入式(12-1) 指导教师: 年 月 日 . I . . r . . 课 程 设 计 任 务 书 设计题目 表达式计算程序设计 学生 所在院系 计科 专业、 年级、 班 12 计科 (嵌入式) 设计要求: 1) 采用如下七种方法实现上述问题求解:插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比) , 找出其中两种较快的方法。并

2、将数据序列和不同的查找算法的性能结果记录入 txt 文件。 学生应完成的工作: 1. 利用随机函数产生 N 个随机整数(10000 以上) 。 2. 对这些数字进行排序。 3. 采用插入、希尔、起泡、快速、选择、归并、堆排序方法解决问题。 4. 对不同的排序算法进行性能比较并记录。 参考文献阅读: 1. 数据结构(C 语言版) 严蔚敏 清华大学 2. C 语言程序设计 丁峻岭 中国铁道 3. C 程序设计 谭浩强 清华大学 工作计划: 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排

3、序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 任务下达日期: 年 月 日 任务完成日期: 年 月 日 指导教师(签名) : 学生(签名) : 多种排序 摘 要: 排序是算

4、法中最基础的问题之一,经典的排序算法是前人不断总结得到的,基于比较的方法是比较直观的方式,主要存在插入法排序、堆排序、希尔排序、归并排序、快速排序,每一种排序算法都有自己的优缺点,比如插入法排序适用于那些长度短的排序,要是长的话,有些爱莫能助啦,堆排序主要是依据了二叉堆的特性,但是创建堆的过程也是一个复杂的问题,希尔排序的过程是一个不断精确的过程,但是目前也只是一个经验方式。归并排序是一个递归的问题,采用分治的思想实现,但是这种算法需要额外的存储空间,快速排序虽然是实践中比较常用的算法,但是对于有序的数组采用快速排序就是灾难。比较型算法的时间复杂度最优也只能到达 O(NlogN)。 关键词:

5、归并排序 快排排序 选择排序 冒泡排序 插入排序 堆排序 希尔排序 部排序 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的

6、方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 目 录 1. 设计背景 . 4 1.1 问题描述 . 4 1.2 问题分析 . 4 2.设计方案 . 4 2.1 算法设计 . 4 2.2 功能模块分析 . 6 3.主要算法流程图 . 15 4. 结果与结论 . 20 4.1 正确结果 . 20 4.2 错误信息 . 22 5. 算法复杂度以及稳定性分析 . 18 6. 收获与致 . 23 7. 参考文献 . 24 8. 附件 . 20 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学

7、生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 1. 设计背景 1.1 问题描述 利用随机函数产生 N 个随

8、机整数 (10000 以上) , 对这些数进行多种方法进行排序。包括:插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序。 1.2 问题分析 经典的排序算法是前人不断总结得到的,基于比较的方法是比较直观的方式,主要存在插入法排序、堆排序、希尔排序、归并排序、快速排序,每一种排序算法都有自己的优缺点。 2.设计方案 2.1 算法设计 (1)选择排序 在待排序的一组数据元素中,选出最小的一个数据元素与第一个位置的数据元素交科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序

9、快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 换;然后在剩下的数据元素当中再找最小的与第二个位置的数据元素交换,循环到只剩下最后一个数据元素为止。 (2)冒泡排序 相邻的两

10、个元素进行比较,将小的调到前面,大的调到后面。 (3)插入排序 待排序的记录放在数组 R0 n-1中排序过程中某一时刻,R 被划分成两个子区间R0,i-1 (有序和)Ri n-1(无序)。直接插入的基本操作是将当前无序区的一个记录 Ri插入到有序区 R0 i-1中适当的位置 (4) 快速排序 在待排序的数组的 n 个元素中取一个元素(一般取第一个), 将其移动到这样的位置:在其之前的元素的值都小于它,在其之后的元素都大于它,这样是一趟快速排序;然后对数组的两个部分进行同样的操作,直到每部分只有一个记录为止;总之,每趟使表的第一个元素放在适当位置,将表两分,再对两子表进行同样的递归划分,直至划分

11、的子表长度为 1。 (5)堆排序 堆排序中 heap 算法的时间复杂度与堆所对应的完全二叉树的树高度 log2n 相关。而 heapsort 中对 heap 的调用数量级为 n,所以堆排序的整个时间复杂度为O(nlog2n) 。并且堆排序是不稳定的。 堆排序利用了大根堆(或小根堆)堆顶记录的关键科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起

12、泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。 (6)归并排序 将两个或两个以上的有序表组成一个新的有序表。 (7)希尔排序 将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序

13、;然后再选择一个更小的增量,再将数组分割为多个子序列进行排序.最后选择增量为 1,即使用直接插入排序,使最终数组成为有序。增量的选择:在每趟的排序过程都有一个增量,至少满足一个规则 增量关系 d1 d2 d3 . dt = 1 (t趟排序); 根据增量序列的选取其时间复杂度也会有变化,这个不少论文进行了研究,在此处就不再深究;本文采用首选增量为 n/2, 以此递推,每次增量为原先的 1/2 ,直到增量为 1。 2.2 功能模块分析 1.数据输入:采取随机函数实现输入数据表。 int input_num() printf( 您要给多少个数排序?ntt); scanf(%d,&data_num);

14、 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己

15、的优缺点 . I . . r . . srand(NULL); printf( 随机产生%d 个数:ntt,data_num); for(int i=1;i=1;i-) printf(%d%s,data_arrayi,i!=1? :n); 其中增加了输出空格与换行区别。 3.主界面实现: 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速

16、选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . printf(DATE:May twenty 2014n); printf(All Copyright Reserved 2014-2015 Wang Guangchun n); printf(ADDRESS: 604 AYITrnnn); printf( n); prin

17、tf( 各种排序比较 n); printf( 默认从大到小输出,可以选择 9 进行切换n); printf( n); printf( * * n); printf( * * * n); printf( * * n); printf( * 520 * n); printf( * 欢迎 * n); printf( * 使用 * n); printf( * * n); printf( * n); printf( 欢迎再次使用!nrn); printf(*n); printf(* . . . . . *n); printf(* . . . . . . *n); printf(* . . . . . .

18、 *n); printf(* . . . . . . *n); 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在

19、插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . printf(* . . . . *n); printf(*n); 4.人机交互界面: printf(n n); printf( 请输入指令 n); printf( * n); printf( $ 1.快速排序 $ n); printf( $ 2.归并排序 $ n); printf( $ 3.堆排序 $ n); printf( $ 4.希尔排序 $ n); printf( $ 5.插入排序 $ n); printf( $ 6.选择排序 $ n); printf( $ 7.冒泡排序 $ n); p

20、rintf( $ 8.重新随机输入 $ n); printf( $ 9.选择排序方式 $ n); printf( * n); printf( 0.退出 n); 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序

21、是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . printf( n); printf( 请选择:n); printf( 请输入指令 n); printf( * n); printf( $ 1.从小到大 $ n); printf( $ 0.从大到小 $ n); printf( * n); printf( 87.退出 n); printf( n); printf( 请选择:n); 5.排序方法的实现: (1)选择排序 void chose_sort(i

22、nt a,int n) int min,temp; for(int i=0;in;i+) 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方

23、法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . min=i; for(int j=i;jaj) min=j; temp=amin; amin=ai; ai=temp; (2)希尔排序 void ShellInsert(int *a,int d,int n) for (int i=d;i= 0&ajtemp)/从后向前,找到比其小的数的位置 aj+d=aj;/向后挪动 j-=d; 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插

24、入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . if(j!=i-d)/ 存在比其小的数 aj+d=temp; void ShellSort(int* a

25、,int n) int d=n/2;/初始增量设为数组长度的一半 while(d=1) ShellInsert(a,d,n); d=d/2;/每次增量变为上次的二分之一 (3)归并排序: void _merge(int a,int first,int mid,int last,int temp) int i=first,j=mid+1,m=mid,n=last,k=0; while(i=m&j=n) if(ai=aj) tempk+=ai+; 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排

26、序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . else tempk+=aj+; while(i=m) tempk+=ai+; while(j=n) tempk+=

27、aj+; for(i=0;ik;i+) afirst+i=tempi; void MergeSort(int a,int first,int last,int temp) if(firstlast) int mid=(first+last)/2; MergeSort(a,first,mid,temp); MergeSort(a,mid+1,last,temp); _merge(a,first,mid,last,temp); bool MergeSort(int a,int n) 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七

28、种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . int *p=new intn; if(p=NULL) return false

29、; else MergeSort(a,0,n-1,p); delete p; return true; (4)堆排序: void HeapAdjust(int *a,int i,int size)/调整堆 int lchild=2*i;/i的左孩子节点序号 int rchild=2*i+1;/i的右孩子节点序号 int max=i;/临时变量 if(i=size/2)/如果 i是叶节点就不用进行调整 if(lchildamax) max=lchild; if(rchildamax) max=rchild; 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设

30、计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . if(max!=i) swap(ai,amax);

31、HeapAdjust(a,max,size);/避免调整之后以 max 为父节点的子树不是堆 void BuildHeap(int *a,int size)/建立堆 int i; for(i=size/2;i=1;i-)/ 非叶节点最大序号值为 size/2 HeapAdjust(a,i,size); void HeapSort(int *a,int size)/堆排序 int j=1; BuildHeap(a,size); for(int i=size;i=1;i-) swap(a1,ai); / 交换堆顶和最后一个元素,即每次将剩余元素中的最大者放到最后面 科嵌入式指导教师年月日课程设计任

32、务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r .

33、. /BuildHeap(a,i-1); / 将余下元素重新建立为大顶堆 HeapAdjust(a,1,i-1); / 重新调整堆顶节点成为大顶堆 (5)冒泡排序: void maopao() int temp; for(int i=1;i=data_num;i+) for(int j=i+1;jdata_arrayj) temp=data_arrayi; data_arrayi=data_arrayj; data_arrayj=temp; (6)插入排序: void charu() 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用

34、如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . int i,j; int temp; printf( 插入排序:n); f

35、or(i=1;i0 & tempdata_arrayj-1;j-) data_arrayj=data_arrayj-1; data_arrayj=temp; if(!t) outnew0(); else outnew1(); (7)快速排序: void kuaisu1()/快速排序 1 printf( 快速排序:n); 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些

36、数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . sort(data_array+1,data_array+data_num+1); if(!t) outnew0(); else outnew1(); 3.主要算法流程图 主程序 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系

37、计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 产生 1 组随机数 将随机

38、数保存在数组中 选择排序 快速排序 归并排序 插入排序 冒泡排序 堆排序 希尔排序 选择排序方式 输出无序数组排序后的结果 选择操作方式 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之

39、一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 4. 结果与结论 4.1 正确结果 1.主界面 人机交互 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记

40、录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 2.输入界面 3.选择排序方式 4.输出结果 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行

41、排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 5.退出界面 4.2 错误信息 5.算法复杂度以及稳定性分析 下图反映了不同算法排序的时间复杂度的级别及其空间复杂度和稳定性。 算法名称 平均时间 辅助空间 稳定性 冒泡排序 O(n2) O(1) 是 选择排序 O(n2) O(1) 否 插入排序 O

42、(n2) O(1) 是 归并排序 O(nlog2n) O(n) 是 快速排序 O(nlog2n) O(n) 否 堆排序 O(nlog2n) O(1) 否 希尔排序 O(1) 否 下图表明了各种算法在不同数据规模下,完成排序所消耗的时间(毫秒为单位) ,从表中可以显然看出 O(n2) 的排序算法比 O(nlog2n)的算法 时间多出几百上千倍, 而且随着数据数据规模增大时间比也会随着增大;因为排序的数据采用随机数,顺序将被打乱,快速排序算法优于其他排序算法。 算法名称 1 万 2 万 3 万 4 万 5 万 6 万 7 万 8 万 9 万 10 万 冒泡排序 1442 5497 12206 21

43、861 34017 49148 67394 88880 111939 139071 选择排序 199 816 1790 3254 5062 7166 9645 12636 16102 19643 插入排序 178 717 1628 2882 4458 6446 8822 11649 14547 17914 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采

44、用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 归并排序 3 6 9 12 15 18 22 26 28 33 快速排序 2 5 8 11 14 18 21 25 29 32 堆排序 3 7 12 16 19 23 26 30 34 37 希尔排序 3 8 11 15 24 24 29 35 40 41

45、 6. 收获与致 通过这次课程设计作业我着实感受了一次编程的乐趣,从中学到了不少知识, 虽然都说“程序数据结构算法” ,但我们在学习运用数据结构编程之前,并没能深刻体会到这一点,直到这次课设实践。 我们感受最深的一点是:以前用 C 编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。但现在编程感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素,首先选取自己需要的数据结构,然后选定一种或几种存储结构来具体的决定后面的函数的主要风格。最后在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当前状况的算法。这样,即使在完整的还没

46、有写出来之前,自己心中已经有了明确的原图了。这样无形中就提高了自己编写的程序的质量。我们还体会到深刻理解数据结构的重要性。只有真正理解定义数据类型的好处,才能用好这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。这次实验中我们也出现过一些错误。但我们经过反复调试后,发现并做了修改,从而完成了此次课程设计。 在这次的数据结构课程设计中,我此次的题目是各种排序,排序实际上是编程设计中应用比较广泛的知识,通过本次设计,我对一些基本的部排序有了很好的理解和掌握,并且通过此次课程设计中的程序运行结果很好的理解了排序各种算法的稳定性和时间复杂度, 既巩固了课堂上学到的排序理论,

47、又为自己的编程增强了实践。总之,在这次的数据结构课程设计中,收获还是蛮多的。也让自己对数据结构这门课程有了更好的认识,相信在越来越多的尝试之后,自己会不断进步不断提高的。 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种

48、排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 7. 参考文献 1.数据结构(C 语言版) 严蔚敏 清华大学 2.C 语言程序设计 丁峻岭 中国铁道 3.C 程序设计 谭浩强 清华大学 8. 附件 程序源代码: #include #include #include #include #include #include #include #include #include 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科

49、专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . #include #inclu

50、de #include #include using namespace std; const int N=1000010; int data_num,data_arrayN,data_arrayyN; int oldN,aN,t; / 数据输入 int input_num() printf( 您要给多少个数排序?ntt); scanf(%d,&data_num); srand(NULL); printf( 随机产生%d 个数:ntt,data_num); for(int i=1;i=1;i-) printf(%d%s,data_arrayi,i!=1? :n); / 排序后逆序数据输出 从小

51、到大 1 data_num int outnew1() printf( 排序后的结果为:); for(int i=1;i=0;i-) printf(%d%s,data_arrayyi,i!=0? :n); / 排序后逆序数据输出 从小到大 0 data_num-1 int outnew3() 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡

52、快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . printf( 排序后的结果为:); for(int i=0;idata_num;i+) printf(%d%s,data_arrayyi,i!=data_num-1? :n); / 插入排序 void charu() int i,j; int temp; printf

53、( 插入排序:n); for(i=1;i0 & tempdata_arrayj-1;j-) data_arrayj=data_arrayj-1; data_arrayj=temp; if(!t) outnew0(); else outnew1(); 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算

54、法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . / 冒泡排序 void maopao() int temp; for(int i=1;i=data_num;i+) for(int j=i+1;jdata_arrayj) temp=data_arrayi; data_arrayi=data_arrayj; data_arrayj=temp; / 选择排序 voi

55、d chose_sort(int a,int n) int min,temp; for(int i=0;in;i+) min=i; for(int j=i;jaj) min=j; 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生

56、签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . temp=amin; amin=ai; ai=temp; / 堆排序 void HeapAdjust(int *a,int i,int size)/调整堆 int lchild=2*i;/i的左孩子节点序号 int rchild=2*i+1;/i的右孩子节点序号 int max=i;/临时变量 if(i=size/2)/如果 i是叶节点就不用进行调整 if(lchildamax)

57、max=lchild; if(rchildamax) max=rchild; if(max!=i) swap(ai,amax); HeapAdjust(a,max,size);/避免调整之后以 max为父节点的子树不是堆 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献

58、阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . void BuildHeap(int *a,int size)/建立堆 int i; for(i=size/2;i=1;i-)/ 非叶节点最大序号值为 size/2 HeapAdjust(a,i,size); void HeapSort(int *a,int size)/堆排序 int j=1; BuildHeap(a,size); for

59、(int i=size;i=1;i-) swap(a1,ai); / 交换堆顶和最后一个元素,即每次将剩余元素中的最大者放到最后面 /BuildHeap(a,i-1); / 将余下元素重新建立为大顶堆 HeapAdjust(a,1,i-1); / 重新调整堆顶节点成为大顶堆 / 快速排序可以选择用 algorithm里的 sort 排序实现 void kuaisu1()/快速排序 1 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能

60、结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . printf( 快速排序:n); sort(data_array+1,data_array+data_num+1); if(!t) outnew0(); else outnew

61、1(); void kuaisu2()/快速排序 2 sort(data_array+1,data_array+data_num+1); if(!t) outnew0(); else outnew1(); / 希尔排序 void ShellInsert(int *a,int d,int n) for (int i=d;i= 0&ajtemp)/从后向前,找到比其小的数的位置 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入

62、文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . aj+d=aj;/向后挪动 j-=d; if(j!=i-d)/ 存在比其小的数 aj+d=temp; void ShellSort(int* a,int n) int d=n/2;/初始

63、增量设为数组长度的一半 while(d=1) ShellInsert(a,d,n); d=d/2;/每次增量变为上次的二分之一 / 归并排序 void _merge(int a,int first,int mid,int last,int temp) int i=first,j=mid+1,m=mid,n=last,k=0; while(i=m&j=n) 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作

64、利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . if(ai=aj) tempk+=ai+; else tempk+=aj+; while(i=m) tempk+=ai+; while(j=n) tempk+=aj+; for(i=0;ik;i+) afi

65、rst+i=tempi; void MergeSort(int a,int first,int last,int temp) if(firstlast) int mid=(first+last)/2; MergeSort(a,first,mid,temp); MergeSort(a,mid+1,last,temp); _merge(a,first,mid,last,temp); 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记

66、录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . bool MergeSort(int a,int n) int *p=new intn; if(p=NULL) return false; else MergeSort(a,0,n-

67、1,p); delete p; return true; / 输出 void print() printf( 欢迎再次使用!nrn); printf(*n); printf(* . . . . . *n); printf(* . . . . . . *n); printf(* . . . . . . *n); printf(* . . . . . . *n); printf(* . . . . *n); printf(*n); 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排

68、序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . / 主函数,显示菜单并进行算法选择 int main() printf(DATE:May twenty 2014n); printf

69、(All Copyright Reserved 2014-2015 Wang Guangchun n); printf(ADDRESS: 604 AYITrnnn); printf( n); printf( 各种排序比较 n); printf( 默认从大到小输出,可以选择 9 进行切换n); printf( n); printf( * * n); printf( * * * n); printf( * * n); printf( * 520 * n); printf( * 欢迎 * n); printf( * 使用 * n); printf( * * n); printf( * n); int

70、 n;/ 变量定义用于菜单选择 input_num();/调用输入函数,请求用户输入数据 while(true) 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不

71、断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . printf(n n); printf( 请输入指令 n); printf( * n); printf( $ 1.快速排序 $ n); printf( $ 2.归并排序 $ n); printf( $ 3.堆排序 $ n); printf( $ 4.希尔排序 $ n); printf( $ 5.插入排序 $ n); printf( $ 6.选择排序 $ n); printf( $ 7.冒泡排序 $ n); printf( $ 8.重新随机输入 $

72、 n); printf( $ 9.选择排序方式 $ n); printf( * n); printf( 0.退出 n); printf( n); printf( 请选择:n); scanf(%d,&n); switch(n) case 1:/快速排序 kuaisu1(); break; 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选

73、择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . case 2:/归并排序 printf( 归并排序:n); for(int j=0;jdata_num;j+) data_arrayyj=data_arrayj+1; MergeSort(data_arrayy,data_num); if(t=1) outnew3(); el

74、se outnew2(); break; case 3:/堆排序 printf( 堆排序:n); HeapSort(data_array,data_num); if(!t) outnew0(); else outnew1(); break; case 4:/希尔排序 printf( 希尔排序:n); for(int j=0;jdata_num;j+) data_arrayyj=data_arrayj+1; 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排

75、序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . ShellSort(data_arrayy,data_num); if(t=1) outnew3(); else outnew2(); break; ca

76、se 5:/插入排序 charu(); break; case 6:/选择排序 printf( 选择排序:n); for(int j=0;jdata_num;j+) data_arrayyj=data_arrayj+1; chose_sort(data_arrayy,data_num); if(t=1) outnew3(); else outnew2(); break; case 7:/冒泡排序 printf( 冒泡排序:n); maopao(); 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序

77、希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . if(t=1) outnew1(); else outnew0(); break; case 8:/重新随机输

78、入 input_num(); break; case 9:/副主界面操作实现 printf( 请输入指令 n); printf( * n); printf( $ 1.从小到大 $ n); printf( $ 0.从大到小 $ n); printf( * n); printf( 87.退出 n); printf( n); printf( 请选择:n); scanf(%d,&t); if(t=87) print(); return 0; / 退出 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排

79、序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . printf( 再次输入排序方法! ! !n); break; case 0: print(); return 0;

80、 / 退出 break; default:printf(n选项输入有误,请重试!nn);/输入有误提示 return 0; 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算

81、法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点 . I . . r . . 指导教师评语: 1、课程设计报告: a 、容: 不完整 完整 详细 b、方案设计: 较差 合理 非常合理 c 、实现: 未实现 部分实现 全部实现 d、文档格式: 不规 基本规 规 2、出勤: 全勤 缺勤 次 3、答辩: a 、未能完全理解题目,答辩情况较差 b、部分理解题目,部分问题回答正确 c 、理解题目较清楚,问题回答基本正确 d、理解题目透彻,问题回答流利 课程设计报告成绩: ,占总成绩比例: 50% 课程设计其它环节成绩: 环

82、节名称: 出勤 ,成绩: ,占总成绩比例: 20% 环节名称: 答辩 ,成绩: ,占总成绩比例: 30% 总 成 绩: 指导教师签字: 年 月 日 科嵌入式指导教师年月日课程设计任务书表达式计算程序设计所在院系计科专业年级班计科嵌入式设计题目学生设计要求采用如下七种方法实现上述问题求解插入排序希尔排序起泡排序快速排序选择排序堆排序归并排序统计每一种算法的性能结果记录入文件学生应完成的工作利用随机函数产生个随机整数以上对这些数字进行排序采用插入希尔起泡快速选择归并堆排序方法解决问题对不同的排序算法进行性能比较并记录参考文献阅读数据结构语言版严蔚敏清指导教师签名学生签名多种排序摘要排序是算法中最基础的问题之一经典的排序算法是前人不断总结得到的基于比较的方法是比较直观的方式主要存在插入法排序堆排序希尔排序归并排序快速排序每一种排序算法都有自己的优缺点

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号