数据结构课程设计排序算法演示系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
】
各专业全套优秀毕业设计图纸
计算机学院
数据结构课程设计
题目:数据结构排序算法演示系统
班级:
姓名:
:
学号:
同组人姓名:
起迄日期:
课程设计地点:
指导教师:
完成日期:2014年12月
目录
\
一、课程设计的目的 (1)
二、设计内容和要求 (1)
三、数据采取的结构 (1)
四、功能模块详细设计 (1)
详细设计思想 (2)
冒泡排序 (5)
快速排序 (7)
直接插入排序 (9)
~
希尔排序 (10)
直接选择排序 (12)
堆排序 (14)
归并排序 (17)
五、总结或心得体会 (19)
六、参考文献 (20)
七、附录 (20)
~
一. 设计目的
随着计算机技术的发展,各种排序算法不断的被提出。排序算法在计算机科
学中有非常重要的意义,且应用很广泛。在以后的发展中排序对我们的学习和生
活的影响会逐渐增大,很有必要学习排序知识。此次课程设计一方面使自己掌握
排序的知识,另一方面锻炼一下团队合作开发系统的能力。
二. 设计内容和要求
功能要求:
(1)界面友好,易与操作。可采用菜单或其它人机对话方式进行选择。
(2)实现各种内部排序。包括直接插入排序,冒泡排序,直接选择排序,希尔排序,快速排序,堆排序,归并排序。
(3)待排序的元素的关键字为整数或(字符)。可用随机数据和用户输入数据作测试比较。比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换以3次计)。
(1)演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,以便比较各种排序的优劣。
三. 本设计所采用的数据结构
typedef struct
{
int key;
}RecType;
详细设计思想
主函数:
#include<>
#include<>
#include <>
#define L 8 ey);
getchar();
}
ch1='y';
while(ch1=='y')
{
printf("\n\t\t 菜单
\n");
printf("\n\t\t***********************************************\n")
;
printf("\n\t\t * 1--------更新排序数据* 2--------直接插入排
序 \n");
printf("\n\t\t * 3--------希尔排序* 4--------冒泡排
序 \n");
printf("\n\t\t * 5--------快速排序* 6--------直接选择排
序 \n");
printf("\n\t\t * 7--------堆排序 * 8--------归并排
序 \n");
printf("\n\t\t **********0--------退出************ \n");
printf("\n\t\t********************************************\n");
printf("\n\t\t请选择:");
scanf("%c",&ch2);
getchar();
for(i=1;i<=L;i++)
{
R[i].key=S[i].key;
}
switch(ch2)
{
case '1':
printf("\n\t\t请输入%d个待排序数据\n\t\t",L);
for(i=1;i<=L;i++)
{
scanf("%d",&S[i].key);
getchar();
printf("\t\t");
}
printf("\n\t\t数据输入完毕!");
break;
case '2':
Insertsort();
break;
case '3':
Shellsort();
break;
case '4':
Bubblesort();
break;
case '5':
printf("\n\t\t原始数据为(按回车键开始排序):\n\t\t");
for(k=1;k<=L;k++)
{
printf("%5d",R[k].key);
}
getchar();
printf("\n");
num=0;sun=0;sum=0;
Quicksort(1,L);
printf("\n\t\t排序最终结果是:\n\t\t");
for(k=1;k<=L;k++)
{
printf("%5d",R[k].key);
}
printf("\n\t\t比较次数是:%d\n\t\t",sum);
printf("\n\t\t交换次数是:%d\n\t\t",sun);
break;
case '6':
Selectsort();
break;
case '7':
Heap();
break;
case '8':
Mergesort();
break;
case '0':
ch1='n';
break;
default: