




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、排序算法比较系统一 项目计划书1. 项目的选题意义随着计算机科学技术的快速发展,排序成为了计算机程序设计中的一种重要操作。它在计算机图形、计算机辅助设计、机器人、模式识别及统计学等领域具有广泛应用。在实际应用当中比如数据统计等方面都会用到。而且对一组数据进行排序也方便了后面对数据查找的操作。要知道在一个有序数组中查找和在一个随机无序数组中的查找的时间复杂度和系统消耗是有天壤之别的。它的的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。由于排序法很多,但就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的的环境下使用。一般情况下,采
2、用不同的排序算法效率会不一样。因此,在不同的环境下选择相对效率最高的排序算法,能够有效加快工程实施的进度。为了方便大家了解不同排序算法的时间效率,特建立一种排序算法比较系统,实现比较不同排序算法效率的目的。2. 项目的主要内容和目标排序算法比较系统主要实现的下列十种功能:一简单选择排序;二折半插入排序;三直接插入排序;四冒泡排序;五希尔排序;六快速排序;七归并排序;八堆排序;九清屏;十退出系统; 3项目的技术基础、特点及实施的条件该项目可用C语言实现,适于在单机环境下运行。小组成员均已学习过C语言程序设计、数据结构、算法等课程,具有一定的开发能力。4.项目人员分工 所有人都参与了项目的选题、设
3、计、实现及测试工作,项目负责人归纳整理小组成员讨论成果,并确定最终方案。在实践阶段,按照功能模块具体分工如下: 项目组负责人:李齐,构建模型、设计算法、设计界面、实现功能二、四、五、六、七、十 项目组成员:刘运皇,初始化数据、实现功能一、三、八、九二 设计方案1. 算法思想的选择与设计 此项目来源于实际问题。通常,在排序的过程中需进行下列两种基本操作:(1)比较两个关键字的大小;(2)将记录从一个位置移动至另一个位置。待排序的记录序列可以用顺序存储结构进行存储,即待排序的一组记录存放在地址连续的一维数组中。在这种存储方式中,记录之间的次序关系由其存储位置决定,则实现排序必须移动记录。因为我们目
4、的要对一系列的正整数进行排序,因此选择顺序存储的方式简洁明了,易于让人理解。而在功能实现过程中,在排序算法比较系统中,要用到递归和分治的思想,以便于算法的设计与实现。我们用库函数来随机生成一系列的正整数,进而选择不同排序算法进行排序比较。其具体实现如下:#includesrand(unsigned)time(NULL); for(long i=0;i=2 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。此种算法流程图如图3。第四种功能是冒泡排序。其算法思想是在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻
5、的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。此种算法的流程图如图4。 第五种功能是希尔排序。其算法思想是算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。此种算法的流程图如图5。 第六种功能是快速排序。其算法思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过
6、一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。此种算法的流程图如图6。第七种功能是归并排序。其算法思想是是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。此种算法的流程图如图7。第八种功能是堆排序。其算法思想是堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数实现排序的函数。此种算法的流程图如图8。 i+开始CS=0;
7、i=0i n-1k=ij nCS+arrayjarraykk=jk!= i结束j+交换arrayk与arrayj位置YNYNYN1.简单选择排序算法流程图 (2) 界面的设计 * 排序算法比较系统 * 1.简单选择排序 2.折半插入排序 3.直接插入排序 4.冒泡排序 5.希尔排序 6.快速排序 7.归并排序 8.堆排序 9.清屏 10.退出系统=4.项目测试方案项目负责人 李齐:单元测试、集成测试项目组成员 刘运皇:系统重构、黑盒测试三 参考文献1谭浩强。C程序设计清华大学出版社,20052严蔚敏,吴伟民. 数据结构(C语言版). 清华大学出版社,20073许秀林,董杨琴. 程序设计基础教程
8、(C语言与数据结构)(第二版). 中国电力出版社,20094李建学,李光元,吴春芳. 数据结构课程设计案例精编(用C/C+描述). 清华大学出版社,20075王晓东。计算机算法设计与分析电子工业出版社,2007四课程设计体会本次课程设计题目是“排序算法比较系统”,是由我们这个小组的两名同学通过结合实际生活共同选定的。刚开始做这个系统的时候,感到完全无从下手,甚至让我觉得这次课程设计根本无法完成。在查阅了各种资料以及参考文献并和小组其他成员进行大量的讨论之后终于对系统的开发过程与方法有了一些思路,于是我们决定按照C语言程序设计来完成该系统的开发。通过对实际问题的思考和分析,我们将各部分的算法构建
9、成数学模型,并通过递归与分治两种算法思想来完成对该系统模型的构建。最后完成了对各种排序算法的效率比较。在该系统的开发过程中,我们遇到了一些困难,如无法统计各排序算法的时间,后来经过查阅资料及同学讨论,找到了相应的解决办法。在测试时又发现了很多问题,主要原因是编写代码时考虑不周,经常出现一些语法错误,但通过同学间的帮助最终都解决了问题。在本次课程设计中,我明白了理论与实践相结合的重要性,并提高了自己组织数据及编写大型程序的能力,培养了基本的、良好的程序设计技能以及合作能力。这次课程设计同样提高了我的综合运用所学知识的能力。并对C语言有了更深入的了解。算法是一门实践性很强的课程,上机实习是对学生全面综合素质进行训练的一种最基本的方法,是与课堂听讲、自学和练习相辅相成的、必不可少的一个环节。因此,在算法的学习过程中,必须严格按照实验大纲的要求,主动地、积极地、认真地做好每一个实验,以不断提高自己的编程能力与专业素质。同时,在学习算法之前,必须要复习C/C+语言,要对指针和结构体的相关知识进行深入学习并上机实践以提高编程能力。本系统的创新之处是实现了对多种内部排序算法的效率比较,但是也有许多不足之处,如:没有实现对数据的排序过程的应用,无法确定系统是否稳定,并且,系统缺少健壮性。总的来说,这次课程设计让我获益匪浅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四六级试题模拟题库及答案
- 2025湖南邵阳市隆回县公开招聘高中职业中专教师40人模拟试卷带答案详解
- 2025年开平礼仪考试试题及答案
- 煤气模拟考试题库及答案
- 2025年驾押人员考试试题及答案
- 江苏苏州高一历史期末试卷及答案
- 山东省机电春考试卷及答案
- 2025年福建省厦门市集美职业技术学校招聘1人模拟试卷及答案详解(网校专用)
- 中国央企管理制度
- 2025年普通运动损伤试题及答案
- 2025年湖南大学事业编制管理辅助岗位招聘58人笔试备考试题及答案解析
- GB 18664-2025呼吸防护装备的选择、使用和维护
- 2025年中国钛杯行业市场全景分析及前景机遇研判报告
- 室内设计方案施工流程
- 水库枢纽工程运行维护管理方案
- 中国电信集团有限公司2026年度秋季校园招聘考试参考题库及答案解析
- 信息安全全员培训课件
- 2025-2026学年大象版(2024)小学科学三年级上册(全册)教学设计(附目录P208)
- 2025年江苏省无锡市中考物理试卷附答案
- 2026年人教版七年级数学下册复习:实数的混合运算专项训练(60题)解析版
- 任务一 编织平安结说课稿-2025-2026学年小学劳动鲁科版五年级上册-鲁科版
评论
0/150
提交评论