课程设计论文各种排序算法性能比较.doc
《课程设计论文各种排序算法性能比较.doc》由会员分享,可在线阅读,更多相关《课程设计论文各种排序算法性能比较.doc(41页珍藏版)》请在三一办公上搜索。
1、各种排序算法性能比较毕业论文 各种排序算法性能比较 系 电子信息工程系 专业 电子信息工程技术 姓名 班级 电信083(系统) 学号0801133115指导教师 职称 讲师 设计时间 2010.11.222011.1.8 目录摘要:3第一章、引言41.1、排序算法的背景41.2、排序算法研究现状51.3、排序算法的意义51.4、排序算法设计目标6第二章、排序算法概要设计72.1、原始数据72.2、输出数据72.3、数据处理72.4、排序算法数据结构设计82 .5排序算法的性能评价82.6、系统的模块划分及模块功能92.6.1、主程序模块92.6.2可排序表单元模块92.7、模块的测试数据10第
2、三章、排序基本算法113.1、直接插入排序函数113.1.1基本原理113.1.2排序过程113.1.3直接插入排序算法113.1.4时间复杂度分析133.2、直接选择排序函数133.2.1基本原理133.2.2排序过程143.2.3直接选择排序算法143.2.4 时间复杂度分析153.3冒泡排序函数163.3.1基本原理163.3.2排序过程163.3.3冒泡排序算法183.3.4 时间复杂度分析193.4 Shell排序函数193.4.1基本原理193.4.2排序过程203.4.3 Shell排序算法213.4.4时间复杂度分析223.5堆排序函数233.5.1基本原理233.5.2排序过
3、程233.5.3堆排序算法273.6快速排序函数283.6.1基本原理283.6.2排序过程293.6.3快速排序算法313.6.4快速排序时间复杂度分析333.7排序主调用函数333.7.1基本原理333.7.2排序主调用算法343.7.3排序主调用时间复杂度分析35第四章、运行与测试36第五章、结论38致谢39参考文献40 摘要:在这两年的专业基础课的学习过程中,我们学习了程序设计基础,面向对象程序设计,数据结构使用C+语言描述等课程。使得我们可以综合运用所学知识,更进一步的理解各个课程之间的联系。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。在这个过程中我遇到了各
4、种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些知识理解得不够深刻。我这次的题目是各种排序性能的比较,这就要求我首先必须掌握各种排序的原理,并且还要把各个排序结合起来综合考虑。我在实现排序功能是没有遇到太大的问题,但在进行移动次数,比较次数和交换次数的统计中始终无法得出正确的结果,最终在指导老师的帮助下才完成。在程序写好后,选择用来测试的数据也很重要,否则体现不出一些问题。在这个程序中,如果排序的数据太少,则无法体现时间排名。通过这次课程设计,使我对数据结构有了更进一步的认识和了解,要通过不断的上机操作才能更好地学习它,我也发现我的许多不足之处,对C+语言的一些库函数不太了解,不能
5、熟练掌握各种常用函数的功能,对函数调用的正确使用不够熟悉,对C+中经常出现的错误也不熟悉。通过这次课程设计,我更加体会到了实践的重要性。!排序算法是数据结构这门课程核心内容之 。它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习排序算法是为了将实际问题中)听涉及的对象在计算机中对它们进行处理。木文首先介绍排序的一些基木概念和一些常用的排序方法,然后利用 VC + 开发 个数据结构的演示系统;该演示系统可以通过操作把数据结构中的主要排序常见的排序算法(有冒泡排序、选择排序、直接插入排序、希尔排序、快速排序、堆排序等)表示出来。该项目
6、在收集各种排序方法的基础上,对其特点、效率、适用性等在不同的数据集上做全面的分析和比较,并以动态演示的方式展示一些经典排序算法运行程。所使用的编程环境为TURBOC2。通过实验可知,一般情况下,记录规模较小时,直接插入排序较好;当记录规模较大且无序时,快速排序较好。关键字:直接插入排序;直接选择排序;起泡排序;Shell排序;快速排序;堆排序;第一章、引言1.1、排序算法的背景21世纪是“信息”主导的世纪,是崇尚“创新与个性”发展的时代,体现“以人为本”、构建“和谐社会”是社会发展的主流。然而随着全球经济一体化进程的不断推进,市场与人才的竞争日趋激烈。对于国家倡导发展的IT产业,需要培养大量的
7、、适应经济和科技发展的计算机人才。众所周知,近年来,一些用人单位对部分大学毕业生到了工作岗位后,需要12年甚至多年的训练才能胜任工作的“半成品”现象反映强烈。从中反映出单位对人才的需求越来越讲究实用,社会要求学校培养学生的标准应该和社会实际需求的标准相统一。对于IT业界来讲,一方面需要一定的科研创新型人才,从事高端的技术研究,占领技术发展的高地;另一方面,更需要计算机工程应用、技术应用及各类服务实施人才,这些人才可统称“应用型”人才。应用型专科教育,简单地讲就是培养高层次应用型人才的本科教育。其培养目标应是面向社会的高新技术产业,培养在工业、工程领域的生产、建设、管理、服务等第一线岗位,直接从
8、事解决实际问题、维持工作正常运行的高等技术应用型人才。这种人才,一方面掌握某一技术学科的基本知识和基本技能,另一方面又具有较强的解决实际问题的基本能力,他们常常是复合性、综合性人才,受过较为完整的、系统的、有行业应用背景的“职业” 项目训练,其最大的特色就是有较强的专业理论基础支撑,能快速地适应职业岗位并发挥作用。因此,可以说“应用型人才培养既有本科人才培养的一般要求,又有强化岗位能力的内涵,它是在本科基础之上的以工程师层次培养为主的人才培养体系”,人才培养模式必须吸取一般本科教育和职业教育的长处,兼蓄并顾。“计算机科学与技术”专业教学指导委员会已经在研究并指导实施计算机人才的“分类”培养,这
9、需要我们转变传统的教育模式和教学方法,明确人才培养目标,构建课程体系,在保证“基础的前提”下,重视素质的养成,突出“工程性”、“技术应用性”、“适应性”概念,突出知识的应用能力、专业技术应用能力、工程实践能力、组织协调能力、创新能力和创业精神,较好地体现与实施人才培养过程的“传授知识,训练能力,培养素质”三者的有机统一。排序算法是在整个计算机科学一与技术领域上广泛被使用的术语。排序算法是计算机程序设计、数据库、操作系统、编译原理及人一 I 智能等的重要基础,广泛的应用于信息学、系统丁;程等各种领域。本人在研究各种算法的过程中,对其特点、效率、适用性等在不同的数据集卜做全面的分析和比较,并以动态
10、演示的方式展示一些经典排序算法运行过程,目的有以下五个方面:做算法的对比研究,培养研究能力;开发一个独立的软件,培养程序设计和软件开发能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;为教学服务,研究结果 nJ 对抽象的 算法与数据结构 的教学有一定的辅助作用。排序是计算机科学中最重要的研究问题之一, 它在计算机图形、计算机辅助设计、机器人、模式识别及统计学等领域具有广泛的应用。由于它固有的理论上的重要性,2000年它被列为对科学和工程计算的研究与实践影响最大的10大问题之一。其功能是将一个数据元素的任意序
11、列重新排列成一个按关键字有序的序列。1.2、排序算法研究现状随着计一算湘 L 技术的口益发展,其应用旱已不局限于简单的数值运算。而涉及到问题的分析、数据结构框架的设计以及插入、删除、排序、查找等复杂的非数值处理和操作。排序算法的学习就是为以后利川计算机资源高效地开发非数值处理的计算机程序打下坚实的理论、方法和技术基础。近来国内外专家学者们对排序算法又有了新的研究和发现。例如:我国山东大学的张峰和张金屯两位教授共同研究了 我国植被数量分类和排序研究进展 这课题。很值得有关部门去学习和研究。1.3、排序算法的意义排序是计算机程序设计中的一种重要操作。它的功能是将一个数据元素的任意序列,重新排列成一
12、个按关键字有序的序列。排序的方法很多,但是就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的环境下使用。如果按排序过程中依据的不同原则对内部排序方法进行分类,则大致可分为直接插入排序;直接选择排序;起泡排序;Shell排序;快速排序;堆排序等六类。此实验通过对直接插入排序;直接选择排序;起泡排序;Shell排序;快速排序;堆排序这几种内部排序算法进行比较,能使我们更好的掌握这些排序的基本思想及排序算法。通过该题目的设计过程,可以加深理解各种数据结构的逻辑结构、存储结构及相应上运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用
13、于解决实际问题,培养我们的动手能力1.4、排序算法设计目标本课程设计对以下排序算法进行比较:直接插入排序;直接选择排序;起泡排序;Shell排序;快速排序;堆排序待排序表的元素关键字为整数,用不同的测试数据做测试比较。比较的指标为关键字的比较次数和关键字的移动次数。最后用图、表格数据汇总数据,以便对这些内部排序算法进行性能分析。本课程设计首先介绍排序的一些基本概念和一些常用的排序方法,然后利用 VC 十开发一个数据结构的演示系统;该演示系统可以通过操作把数据结构中的主要排序常见的排序算法(直接插入排序;直接选择排序;起泡排序;Shell排序;快速排序;堆排序)表示出来。该项目在收集齐种排序方法
14、的基础上,对其特点、效率、适用性等在不同的数据集上做全面的分析和比较,并以动态演示的方式展示一些经典排序算法运行程。第二章、排序算法概要设计2.1、原始数据用户输入记录的个数,数据由随机数产生器生成。2.2、输出数据产生的随机数分别用直接插入排序;直接选择排序;起泡排序;Shell排序;快速排序;堆排序这些排序方法进行排序,输出关键字的比较次数和移动次数。2.3、数据处理主程序产生1组随机数起泡排序Shell排序快速排序直接选择排序堆排序记录关键字的比较次数和移动次数将随机数保存在数组中循环20次输出关键字的比较次数、移动次数的平均值直接选择排序 2.4、排序算法数据结构设计本程序中,考虑的内
15、容就是待排序对象,排序的依据是关键字之间的大小比较,故在每个节点的类型定义中,至少得包含关键字key一项。不失一般性,这里就使用关键词这一项,其他都省略,具体应用加上其他数据项即可。被排序对象是由一个个节点够成,一个排序对象呢包含一系列指向一串节点的指针,排序对象的长度。本程序功能简单。typedef structint key; /*关键字*/RecordNode; /*排序节点的类型*/typedef structRecordNode *record;int n; /*排序对象的大小*/SortObject; /*排序节点的类型*/2 .5排序算法的性能评价 ( 1 )执行时问和所需的辅助
16、空间若排序算法所需的辅助空间并不依赖 J 七问题的规模 I , ,即辅助空问是 o ( l ) ,则称之为就地排序( In 一 PlaCe Sort )。非就地排序一般要求的辅助空问为 o (n )。 ( 2 )算法本身的复杂程度排序算法的时间开销:大多数排序算法的时问开销主要是关键字之间的比较和记录的移动。有的排序算法其执行时间不仅依赖于问题的规模,还取决于输入实例中数据的状态。2.6、系统的模块划分及模块功能MainSortMethodQuickSortHeapSortInsertSortSelectSortBubbleSortShellSortQuickOutput2.6.1、主程序模块
17、void main()2.6.2可排序表单元模块A直接插入排序void InsertSort (SortObject *p,unsigned long *compare,unsigned long *exchange)B.直接选择排序void SelectSort(SortObject *p,unsigned long *compare,unsigned long *exchange) C.冒泡排序void BubbleSort (SortObject *p,unsigned long *compare,unsigned long *exchange)DShell排序void ShellSor
18、t(SortObject *p,int d,unsigned long *compare,unsigned long *exchange)E堆排序 void SiftHeap(SortObject *pvector,int size,int p,unsigned long *compare,unsigned long *exchange)/*调整为堆*/F快速排序void QuickSort(SortObject *pvector,int left,int right,unsigned long *compare,unsigned long *exchange)/*6.快速排序*/G排序主调用
19、函数void SortMethod(void)2.7、模块的测试数据以关键字的数目分别为20,100,500为例,作为测试数据第三章、排序基本算法3.1、直接插入排序函数3.1.1基本原理假设待排序的n个记录R0,R1,Rn顺序存放在数组中,直接插入法在插入记录Ri(i=1,2,n-1)时,记录的集合被划分为两个区间R0,Ri-1和Ri+1,Rn-1,其中,前一个子区间已经排好序,后一个子区间是当前未排序的部分,将关键码Ki与Ki-1Ki-2,K0依次比较,找出应该插入的位置,将记录Ri插,然后将剩下的i-1个元素按关键词大小依次插入该有序序列,没插入一个元素后依然保持该序列有序,经过i-1趟
20、排序后即成为有序序列。每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。3.1.2排序过程关键字: 10 3 25 20 8 第一趟: 3 10 25 20 8 (将前两个数据排序)第二趟: 3 10 25 20 8 (将 25 放入前面数据中的适当位置)第三趟: 3 10 20 25 8 (将 20 放入适当的位置)第四趟: 3 8 10 20 25 (将 8 放入适当的位置)3.1.3直接插入排序算法void InsertSort(SortObject *p,unsigned long *compare,unsigned long *
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 论文 各种 排序 算法 性能 比较
链接地址:https://www.31ppt.com/p-4868175.html