排序方法综述及其性能演示平台设计-软件工程本科生毕业论文.docx

上传人:bao****ty 文档编号:132450181 上传时间:2020-05-16 格式:DOCX 页数:28 大小:129.62KB
返回 下载 相关 举报
排序方法综述及其性能演示平台设计-软件工程本科生毕业论文.docx_第1页
第1页 / 共28页
排序方法综述及其性能演示平台设计-软件工程本科生毕业论文.docx_第2页
第2页 / 共28页
排序方法综述及其性能演示平台设计-软件工程本科生毕业论文.docx_第3页
第3页 / 共28页
排序方法综述及其性能演示平台设计-软件工程本科生毕业论文.docx_第4页
第4页 / 共28页
排序方法综述及其性能演示平台设计-软件工程本科生毕业论文.docx_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《排序方法综述及其性能演示平台设计-软件工程本科生毕业论文.docx》由会员分享,可在线阅读,更多相关《排序方法综述及其性能演示平台设计-软件工程本科生毕业论文.docx(28页珍藏版)》请在金锄头文库上搜索。

1、 本科生毕业论文(设计)题目 排序方法综述及其性能演示平台设计 姓名 学号 院系 信息科学与工程学院 专业 软件工程 指导教师 职称 副教授 2016 年 5 月 20 日教务处制目 录摘要1关键词1Abstract1Key Words1引言11 研究背景与内容21.1 研究背景21.2 本文内容22 基本内部排序方法22.1 冒泡排序22.1.1 基本原理22.1.2 核心代码22.1.3 举例演示32.1.4 性能分析32.2 快速排序32.2.1 基本原理32.2.2 核心代码32.2.3 举例演示32.2.4 性能分析42.3 直接插入排序42.3.1 基本原理42.3.2 核心代码4

2、2.3.3 举例演示42.3.4 性能分析42.4 希尔排序52.4.1 基本原理52.4.2 核心代码52.4.3 举例演示52.4.4 性能分析52.5 简单选择排序52.5.1 基本原理52.5.2 核心代码62.5.3 举例演示62.5.4 性能分析62.6 堆排序62.6.1 基本原理62.6.2 核心代码62.6.3 举例演示72.6.4 性能分析83 算法性能对比83.1 时间性能对比83.1.1 时间复杂度分析83.1.2 示例性能测试93.1.3 极端情况下算法性能对比103.2 算法稳定性对比113.3 空间性能对比123.4 演示平台设计12结论13致谢14参考文献14附

3、录15II排序方法综述及其性能演示平台设计摘要:数据结构是计算机专业中的一门基础专业课程,而排序算法则是数据结构课程中研究的基本课题之一,其目的是方便记录的查找、插入和删除。本文介绍了几种基本的排序算法,并利用多组规模不同的测试数据进行测试,从而可以从具体的运行时间上对多种排序算法进行客观的性能比较。从样例数据测试结果得知,在不同的情况下,不同的排序算法在性能上有很大的差异。在某一种数据环境中性能表现出色的算法很可能在另一种数据环境中效率变得较低。而这种差异性说明,不存在绝对完美的排序算法,要根据实际的应用环境选择最为合适的排序算法,或者对某一大规模数据先后使用多种不同的算法进行处理,以达到优

4、势互补,效率最大化。关键词:排序 性能 测试Sorting Algorithm Summary and Performance Demonstration Platform DesignAbstract: Data Structures is a basic professional course in computer science, and sorting algorithm is one of the basic project in the study of data structures, its purpose is to facilitate the record search

5、, insert and delete. The article describes several basic sorting algorithm and use of several different sizes data for testing, so that we can make an objective performance comparison of several sorting algorithms from specific run-time. We can learn from the test result of the sample data that in d

6、ifferent environment, different sorting algorithms shows a vary widely difference in performance. An algorithm which have excellent performance in a particular data environment maybe have a worse effectiveness in another data environment. And this difference explained that doesnt exist the absolutel

7、y perfect algorithm, and should choose the best appropriate algorithm based on the actual application environment, or using several different algorithms for processing against a large scale data in order to have the maximum efficiency.Key Words: sort; performance; test引言排序1是计算机科学中研究的基本课题之一。在不同的情况下,比

8、如数据正序或逆序,不同排序算法的时间性能、比较次数、交换次数有很大差异。在选择排序算法2时,只能根据实际情况以及约束条件来确定。1 研究背景与内容1.1 研究背景排序算法在计算机软件开发中应用十分广泛,同时也是计算机专业课程教学中十分重要的一个组成部分。在日常生活、工作中接触到的计算机软件大多都与排序有着密不可分的联系。例如:教师需要对某个班级全体学生的成绩进行排序,从而更清楚地知晓每位同学进步与否;在图像处理软件中,程序要确定多个图层之间的层叠顺序从而确保得到正确的渲染结果;购物网站要对顾客提出的价格区间进行快速准确地排序并呈现在页面上。因此,排序在计算机程序中无处不在。然而排序算法自最早提

9、出至今已经发展多年,不同的排序算法层出不穷。在现实生活中,不同的排序算法去处理同一组数据会产生非常明显的性能差异。因此深入研究排序算法的原理对开发高效率程序有着十分重要的意义,也是任何程序员算法入门的基础。通过对排序算法的性能分析一方面有助于加深对各个排序算法的理解,另一方面有助于开发者在不同的环境下选择不同的排序算法以获得最佳性能1.2 本文内容本文主要研究几种基本的排序算法的时间性能和执行次数。几种基本的排序算法主要包括冒泡排序3、快速排序4、直接插入排序5、希尔排序6、简单选择排序7和堆排序8。其中冒泡排序和快速排序属于交换类排序,直接插入排序和希尔排序属于选择类排序,简单选择排序和堆排

10、序属于插入类排序。第一节主要叙述了关于排序算法的实际应用意义以及研究比较不同排序算法间性能差异的重要性。第二节分别论述了几种排序算法的核心思想以及执行原理,通过一组相同的示例数据来简单演示算法的执行过程,并对其进行时间性能的分析。第三节主要进行多重排序算法间的性能比较,主要从测试得到的数据来进行论证,包括算法执行时间以及交换次数。并通过设置特殊数据(递增数列和递减数列)来比较不同的算法在极端条件下时间性能,从而可以得到较为全面的算法分析。附录主要包括程序源代码。2 基本内部排序方法2.1 冒泡排序2.1.1 基本原理算法从数据前部开始,将相邻的数据进行两两比较,按照从大到小或者从小到大的顺序进

11、行交换3。针对所有元素重复此步骤直至最后一个元素。此时一趟排序完成,最后一个元素为数据中的最大值(或最小值)。然后再从第一个元素开始重复进行上面的步骤,直到一趟排序中没有任何元素发生交换,此时排序结束。2.1.2 核心代码for (int i = 1; i temp.length; i+) for (int j = 0; j tempj + 1) int t = tempj + 1;tempj + 1 = tempj;tempj = t;2.1.3 举例演示初始记录:48 37 64 96 75 12(设从小到大排列)第一趟: 37 48 64 75 12 96第二趟: 37 48 64 12

12、 75 96第三趟: 37 48 12 64 75 96第四趟: 37 12 48 64 75 96第五趟: 12 37 48 64 75 962.1.4 性能分析最好情况:待排序数据为正序排列,此时仅需一趟比较,不发生元素交换。最坏情况:待排序数据为逆序排列,此时算法需要n-1趟排序,共比较n*(n-1)/2次,取平均值的时间复杂度为O(n2)。2.2 快速排序2.2.1 基本原理快速排序算法是对冒泡排序的一种改进4。首先任意选取一个元素(通常选用数组第一个元素)作为轴值元素,第一趟排序将记录分割为两个相对独立的部分,其中一部分中所有元素都比轴值元素小,另一部分中所有元素都比轴值元素大。取两

13、个指针low和high分别指向分割后每一部分的第一个元素和最后一个元素,设置轴值为pivot。第二趟排序时,对上述分割后的两部分元素重复第一趟排序的操作。重复此过程直至low=high结束。2.2.2 核心代码int center = arrayleft;/轴值元素取数组第一个元素while (left right) while (left = center)right-;if (left right) arrayleft = arrayright;left+;while (left right & arrayleft = center)left+;if (left right) arrayright = arrayleft;right-;arrayleft = center;2.2.3 举例演示初始记录:48 37 64 96 75 12(设从小到大排列)第一趟: (12 37) 48 (96 75 64)第二趟: (12) 37 48 (64 75) 96第三趟: 12 37 48 64 (75) 962.2.4 性能分析快速排序的时间主要花费在划分操作上,对长度为k的区间进行划分,共需要k-1次关键字的比较。在最好情况下,每次划分所取得轴值都

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

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

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