数据结构课程设计排序算法演示系统

上传人:博****1 文档编号:455812733 上传时间:2023-03-21 格式:DOC 页数:34 大小:663.50KB
返回 下载 相关 举报
数据结构课程设计排序算法演示系统_第1页
第1页 / 共34页
数据结构课程设计排序算法演示系统_第2页
第2页 / 共34页
数据结构课程设计排序算法演示系统_第3页
第3页 / 共34页
数据结构课程设计排序算法演示系统_第4页
第4页 / 共34页
数据结构课程设计排序算法演示系统_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《数据结构课程设计排序算法演示系统》由会员分享,可在线阅读,更多相关《数据结构课程设计排序算法演示系统(34页珍藏版)》请在金锄头文库上搜索。

1、各专业全套优秀毕业设计图纸计算机学院数据结构课程设计题 目:数据结构排序算法演示系统班 级:姓 名:学 号:同组人姓名:起迄日期:课程设计地点 :指导教师:评阅意见:成绩评定:评阅人:日期:完成日期: 2014 年 12 月目录一、课程设计的目的1二、设计内容和要求1三、数据采取的结构1四、功能模块详细设计14.1详细设计思想2冒泡排序5快速排序7直接插入排序9希尔排序10直接选择排序12堆排序14归并排序17五、总结或心得体会19六、参考文献 .20七、附录 .20一.设计目的随着计算机技术的发展, 各种排序算法不断的被提出。 排序算法在计算机科学中有非常重要的意义, 且应用很广泛。 在以后

2、的发展中排序对我们的学习和生活的影响会逐渐增大, 很有必要学习排序知识。 此次课程设计一方面使自己掌握排序的知识,另一方面锻炼一下团队合作开发系统的能力。二.设计内容和要求功能要求:(1) 界面友好,易与操作。可采用菜单或其它人机对话方式进行选择。(2) 实现各种内部排序。包括直接插入排序,冒泡排序,直接选择排序,希尔排序,快速排序,堆排序,归并排序。(3) 待排序的元素的关键字为整数或(字符)。可用随机数据和用户输入数据作测试比较。比较的指标为有关键字参加的比较次数和关键字的移动次数 ( 关键字交换以 3 次计) 。( 1) 演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表

3、,以便比较各种排序的优劣。三.本设计所采用的数据结构typedef structint key;RecType;四. 功能模块详细设计排序算法演示系统冒快直希直堆归泡速接尔接排并排排插排选序排序序入序择序排排序序- 1 -4.1 详细设计思想主函数:#include#include#include #define L 8/排序元素个数#define FALSE 0#define TRUE 1typedef structint key;RecType;RecType RL;int num;int sum;int sun;/定义排序趟数的全局变量/系统主界面/主函数int main()RecTyp

4、e S100;int i,k;char ch1,ch2,q;printf(ntt*排序 算法 演示 系统 *nntt请输入 %d 个待排序的数据: n,L);for(i=1;i=L;i+)printf(tt 请输入第 %dth 数据 :,i);scanf(%d,&Si.key);getchar();ch1=y;while(ch1=y)printf(ntt菜单n);printf(ntt*n);printf(ntt * 1-更新排序数据 * 2- 直接插入排序n);printf(ntt * 3-希 尔排序*4- 冒 泡排 序n);printf(ntt * 5-快 速排序*6- 直接选择排序n);p

5、rintf(ntt * 7-堆 排序 * 8- 归 并排 序n);printf(ntt *0-退出*n);printf(ntt*n);- 2 -printf(ntt 请选择 :);scanf(%c,&ch2);getchar();for(i=1;i=L;i+)Ri.key=Si.key;switch(ch2)case 1:printf(ntt 请输入 %d 个待排序数据 ntt,L);for(i=1;i=L;i+)scanf(%d,&Si.key);getchar();printf(tt);printf(ntt 数据输入完毕! );break;case 2:Insertsort();break

6、;case 3:Shellsort();break;case 4:Bubblesort();break;case 5:printf(ntt 原始数据为(按回车键开始排序):ntt);for(k=1;k=L;k+)printf(%5d,Rk.key);getchar();printf(n);num=0;sun=0;sum=0;Quicksort(1,L);printf(ntt 排序最终结果是: ntt);for(k=1;k=L;k+)printf(%5d,Rk.key);printf(ntt 比较次数是: %dntt,sum);- 3 -printf(ntt 交换次数是: %dntt,sun);

7、break;case 6:Selectsort();break;case 7:Heap();break;case 8:Mergesort();break;case 0:ch1=n;break;default:system(cls);/清屏printf(ntt 对不起,您输入有误,请重新输入! n); break;if(ch2!=0)if(ch2=2|ch2=3|ch2=4|ch2=5|ch2=6|ch2=7|ch2=8)printf(nntt 排序完毕! );printf(ntt 按回车键继续! );q=getchar();if(q!=n)getchar();ch1=n;return 1;-

8、4 -图一 主界面冒泡排序核心思想依次比较相邻的两个数,将小数放在前面,大数放在后面,第一轮比较后,最大的数便被放到了最后;第二轮操作前 n-1 个数据(假设有 n 个数据),依然是依次比较相邻的两个数, 将小数放在前面, 大数放在后面, 倒数第二个数便是第二大的数;同理第 i 轮操作前 n-i+1 的数据(假设 i 取值是从 1 开始的),则 n-i+i 位置上的数据为第 i 大的数据。一共有 n-1 轮,第 i 轮比较中共比较 n-i 次比较。核心代码void Bubblesort()int i,j,k,x=0,y=0,m=0;int exchange=TRUE;/标志位 exchange

9、初始化为 TRUE 1printf(ntt 原始数据为(按回车键开始排序):ntt);for(k=1;k=L;k+)- 5 -printf(%5d,Rk.key);getchar();printf(n);for(i=1;iL&exchange=TRUE;i+)/外层对总的循环次数执行次数exchange=FALSE;for(j=1;j=L+1-i;j+) / 内层相邻记录的交换与比较 m+;/ 比较次数 + if(Rj.keyRj-1.key)R0.key=Rj.key;Rj.key=Rj-1.key;Rj-1.key=R0.key;exchange=TRUE;y+;/ 移动次数 +m-;/ 比较次数if(exchange)/输出语句printf(tt 第%d 趟冒泡排序的结果为:ntt,i);for(k=1;k=L;k+) printf(%5d,Rk.key);getchar();printf(n);printf(ntt 比较次数是: tt);printf(%d,m);printf(ntt 移动次数是: tt);printf(%d,y);printf(ntt 排序最终结果是: ntt);for(i=1;i=L;i+)

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

最新文档


当前位置:首页 > 办公文档 > 活动策划

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