数据结构课程设计报告 各种排序算法性能比较

数据结构课程设计报告 各种排序算法性能比较

ID:1472386

大小:334.00 KB

页数:21页

时间:2017-11-11

数据结构课程设计报告 各种排序算法性能比较_第1页
数据结构课程设计报告 各种排序算法性能比较_第2页
数据结构课程设计报告 各种排序算法性能比较_第3页
数据结构课程设计报告 各种排序算法性能比较_第4页
数据结构课程设计报告 各种排序算法性能比较_第5页
资源描述:

《数据结构课程设计报告 各种排序算法性能比较》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《数据结构(C语言)》课程设计报告各种排序算法性能比较课程设计报告课程设计题目:各种排序算法性能比较学生姓名:学号:专业:信息管理与信息系统班级:指导教师:2012年06月23日20《数据结构(C语言)》课程设计报告各种排序算法性能比较目录CONTENTS一、课程设计目的……………………………………………………2二、课程设计题目概述………………………………………………2三、数据定义…………………………………………………………2四、各种排序的基本原理及时间复杂度分析………………………3五、程序流程图………………………………………………………6六、

2、程序源代码………………………………………………………6七、程序运行与测试…………………………………………………15八、实验体会…………………………………………………………九、参考文献…………………………………………………………20《数据结构(C语言)》课程设计报告各种排序算法性能比较一、课程设计目的课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。二、课程设计题目概述排序的方法很多,但是就其全面性能而言,很难提出一种被认为是最好的方法

3、,每一种方法都有各自的优缺点,适合在不同的环境下使用。如果排序中依据的不同原则对内部排序方法进行分类,则大致可分为直接插入排序、直接选择排序、起泡排序、Shell排序、快速排序、堆排序等六类排序算法。本实验是对直接插入排序、直接选择排序、起泡排序、Shell排序、快速排序、堆排序这几种内部排序算法进行比较,用不同的测试数据做测试比较。比较的指标为关键字的比较次数和关键字的移动次数。最后用图表数据汇总,以便对这些内部排序算法进行性能分析。三、数据定义输入数据:由于大多数排序算法的时间开销主要是关键字之间的比较和记录的移动,算法的执行时间不仅依赖于

4、问题的规模,还取决于输入实例中数据的状态。所以对于输入数据,我们采用由用户输入记录的个数(以关键字的数目分别为20,100,500为例),测试数据由随机数产生器生成。输出数据:产生的随机数分别用直接插入排序;直接选择排序;起泡排序;Shell排序;快速排序;堆排序这些排序方法进行排序,输出关键字的比较次数和移动次数。20《数据结构(C语言)》课程设计报告各种排序算法性能比较四、各种排序的基本原理及时间复杂度分析1、直接插入排序(InsertSort)1.1、基本原理:假设待排序的n个记录{R0,R1,…,Rn}顺序存放在数组中,直接插入法在插入

5、记录Ri(i=1,2,…,n-1)时,记录被划分为两个区间[R0,Ri-1]和[Ri+1,Rn-1],其中,前一个子区间已经排好序,后一个子区间是当前未排序的部分,将关键码Ki与Ki-1Ki-2,…,K0依次比较,找出应该插入的位置,将记录Ri插,然后将剩下的i-1个元素按关键词大小依次插入该有序序列,没插入一个元素后依然保持该序列有序,经过i-1趟排序后即成为有序序列。每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。1.2、时间复杂度分析:直接插入排序算法必须进行n-1趟。最好情况下,

6、即初始序列有序,执行n-1趟,但每一趟只比较一次,移动元素两次,总的比较次数是(n-1),移动元素次数是2(n-1)。因此最好情况下的时间复杂度就是O(n)。最坏情况(非递增)下,最多比较i次,因此需要的比较次数是:所以,时间复杂度为O(n2)。2、直接选择排序(SelectSort)2.1、基本原理:待排序的一组数据元素中,选出最小的一个数据元素与第一个位置的数据元素交换;然后在剩下的数据元素当中再找最小的与第二个位置的数据元素交换,循环到只剩下最后一个数据元素为止,依次类推直到所有记录。第一趟第n个记录中找出关键码最小的记录与第n个记录交换

7、;第二趟,从第二个记录开始的,2-1个记录中再选出关键码最小的记录与第二个记录交换;如此,第i趟,则从第i个记录开始的n-i+l个记录中选出关键码最小的记录与第i个记录交换,直到所有记录排好序。2.2、时间复杂度分析:20《数据结构(C语言)》课程设计报告各种排序算法性能比较该算法运行时间与元素的初始排列无关。不论初始排列如何,该算法都必须执行n-1趟,每趟执行n-i-1次关键字的比较,这样总的比较次数为:所以,简单选择排序的最好、最坏和平均情况的时间复杂度都为O(n2)。3、冒泡排序(BubbleSort)3.1、基本原理在每一趟冒泡排序中,

8、依次比较相邻的两个关键字大小,若为反序咋交换。经过一趟起泡后,关键词大的必须移到最后。按照这种方式进行第一趟在序列(I[0]~I[n-1])中从前往后

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。