C语言课程设计说明书排序算法系统设计

上传人:汽*** 文档编号:431693479 上传时间:2024-02-03 格式:DOC 页数:18 大小:216KB
返回 下载 相关 举报
C语言课程设计说明书排序算法系统设计_第1页
第1页 / 共18页
C语言课程设计说明书排序算法系统设计_第2页
第2页 / 共18页
C语言课程设计说明书排序算法系统设计_第3页
第3页 / 共18页
C语言课程设计说明书排序算法系统设计_第4页
第4页 / 共18页
C语言课程设计说明书排序算法系统设计_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C语言课程设计说明书排序算法系统设计》由会员分享,可在线阅读,更多相关《C语言课程设计说明书排序算法系统设计(18页珍藏版)》请在金锄头文库上搜索。

1、课程设计说明书摘 要C是一种通用的程序设计语言,C语言在很多方面继承和发展了以往许多高级程序设计语言的成功经验和特色,具有书写格式自由、数据类型丰富、语句功能强大、执行速度快和存储控制能力强等优点。排序算法系统设计是关于顺序表排序算法来设计的一个系统。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成顺序表排序算法的全过程,包括直接插入排序、二分法插入排序、直接选择排序、冒泡排序、两路冒泡排序、分块归并排序、归并排序以及重新生成随机数组。本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。关键词:排序算

2、法系统,C语言,数据结构,CFreeV5.0目录1课题背景的介绍11.1 课题背景11.2 目的12需求分析22.1 数据需求分析22.2 功能需求分析23系统总体设计33.1 系统模块划分33.2 系统模块结构图34系统详细设计44.1 系统主界面设计44.2初始化学生信息44.3查找学生信息44.4删除学生信息54.5更新学生信息54.6排序74.7统计学生信息114.8插入学生信息115系统连编与运行126总 结13参考文献14第 2 页 共 18 页1 课题背景的介绍1.1 课题背景算法是程序的核心,对数据进行排序是各种管理系统中不可缺少的一部分,大量的数据进行排序处理,算法的好坏决定

3、着程序的执行效率以及用户的使用感受,而作为最为常用的顺序表存储结构排序,我们针对其设计了一个排序算法系统,并将归并排序和冒泡排序进行优化设计,这也是我们研究这个课程的目的。为了能够更好的来实现对顺序表结构的数据排序,通过对日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今排序算法需求的计算机排序算法系统,具有一定的实际开发价值和使用价值。1.2 目的本课题运用C语言进行开发,C语言能够简单的进行编译一些程序,来实现对一些问题的解决。它虽然比较简单的处理一些问题,但却有更高的效率。它能够被大多数用户所接受,因为它能够

4、呈现出清晰的界面,是人们能够很好的理解。能在一些方面给人们更好的服务,成为人们的好帮手。经过这一个学期对数据结构的学习,我们都学到了不少东西,可能有些学的还不够理想,但无论如何这些知识都为我们的下一步学习打下了坚实的基础。做这么一个课程设计,一方面是为了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。2 需求分析随着日常处理数据规模的不断扩大,程序向着大型化,规模化发展,而对于数据排序效率的要求不断提高。在这种情况下单靠人工来处理信息不但显得大不从心,而且极容易出错。因此,需要开发排序算法系统,该系统可以实现

5、由计算机代替人工执行一系列复杂而繁琐的排序操作,使得程序设计人员可以轻松快捷的完成对各种数据的排序管理的任务。2.1 数据需求分析本系统的主要数据是顺序表数组。为了有更好的排序算法展示效果,数组的数据由单独的随机数组生成函数创建。2.2 功能需求分析本系统主要实现对数据的各种排序算法,需要实现以下几个方面的功能:(1)直接插入排序(2)二分法插入排序(3)直接选择排序(4)冒泡排序(5)两路冒泡排序(6)分块归并排序(7)归并排序(8)重新生成随机数组3 系统总体设计3.1 系统模块划分本系统主要是对数据的排序算法,包括了排序算法有:直接插入排序,二分法插入排序,直接选择排序,冒泡排序,两路冒

6、泡排序,分块归并排序,归并排序。整个系统分为以下几个模块。1、菜单模块 本模块实现菜单列表,通过用户选择列表调用相关函数实现功能。2、排序算法模块本模块用于实现对数据的各种排序算法。其中包括:1、直接插入排序2、二分法插入排序3、直接选择排序4、冒泡排序排序5、两路冒泡排序6、分块归并排序7、归并排序3.2系统模块结构图根据排序算法系统功能设计,对应的系统模块结构图如图3.2.1所示:图3.2.1 系统模块结构图冒泡排序归并排序法分块归并排序两路冒泡排序两路冒泡排序二分法排序直接插入法直接选择法退出各种排序算法重新生成数组程序菜单4 系统详细设计4.1 系统主界面设计统过对该系统设计的了解与讨

7、论,同时也为了广大使用者的方便与快捷。我们最后设计了这样的一个界面。首先要让使用者明白怎样使用此系统。这就需要通过界面来给他们一个清晰而明白的空间。而我们设计的这个界面恰好符合了这一要求。通过调用界面函数来使使用者能够很方便的进行各种排序算法的操作。doputLOGO();printf( 1直接插入排序n);printf( 2二分法插入排序n);printf( 3直接选择排序n);printf( 4冒泡排序n);printf( 5两路冒泡排序n);printf( 6分块归并排序 n);printf( 7归并排序n);printf( 8重新生成随机数组n);printf( 9退出n);print

8、f(n 请用键盘选择:);Key=UserChoice(123456789); /提高运行效率 确保每一次循环都有效if(Key != 9)CLS;switch(Key)case 1:/直接插入排序 tmp = straitsort(L); OutputSqList(tmp); break;case 2:/二分法插入排序 tmp = bisort(L); OutputSqList(tmp); break;case 3:/直接选择排序 tmp = directbisort(L); OutputSqList(tmp); break; case 4:/冒泡排序 tmp = maopaobisort(

9、L); OutputSqList(tmp); break; case 5:/两路冒泡排序 tmp = TwinBubbleSort(L); OutputSqList(tmp); break; case 6:/分块归并排序 tmp = L; ShowMergerListPlus(L, S); break; case 7:/归并排序 tmp = L; MergeSort(tmp); OutputSqList(tmp); break; case 8:/重新生成随机数组 CreateSqList(L);/创建随机数数组 OutputSqList(L); break;if(Key != 9)PAUSE;

10、while(Key!=9);4.2创建部分有序随机数组为排序算法创建随机数组。void CreateSqList(SqList &L)SqList tmp;L = tmp;int iRand;/随机数 int rndLength;/随机有序数个数 printf(请输入数组长度:); do scanf(%d, &L.length); if (L.length MAXSIZE) printf(输入有误!请重新输入n); while (L.length MAXSIZE); srand(unsigned)time(NULL);/初始化随机数 for(int i=0; i= L.length)/检查生成随机数数量是否超过要求数量 rndLength = L.length - i; printf(n%d个随机数 已生成%d个:, rndLength,i); for(int j=0; jsta = -1; p-end = -1;/ -1 + 1 = 0 即为初个分组起始下标 for(i=0; i L.datai)/*找到位置!(当前数小于tmp)*/ r = (SpScope *)malloc(sizeof(SpScope) r-sta = p-end + 1;r-end = i - 1;p-next = r; p = r;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

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