算法的时间复杂度实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一算法的时间复杂度
一、实验目的与要求
熟悉C/C++语言的集成开发环境;
通过本实验加深对算法分析基础知识的理解。
软件环境:操作系统:windows7 旗舰版
集成开发环境:visual studio 2010 旗舰版
硬件环境:处理器:因特尔 Core i3 M 380
内存: 2GB
二、实验内容:
掌握算法分析的基本方法,并结合具体的问题深入认识算法的时间复杂度分析。
三、实验题
定义一个足够大的整型数组,并分别用起泡排序、简单选择排序、快速排序和归并排序对数组中的数据进行排序(按从小到大的顺序排序),记录每种算法的实际耗时,并结合数据结构中的知识对算法的时间复杂度分析进行说明。实验数据分两种情况:
1、数组中的数据随机生成;
2、数组中的数据已经是非递减有序。
四、实验步骤
理解算法思想和问题要求;
编程实现题目要求;
上机输入和调试自己所编的程序;
验证分析实验结果;
整理出实验报告。
五、实验程序
#include<>
#include<>
#include
#include<> 组大小ARRAY_MAXSIZE为10000如下:
2.数组大小ARRAY_MAXSIZE为8000如下
3.数组大小ARRAY_MAXSIZE为5000如下:
六、实验分析
1、各算法时间时间消耗图
2、各算法时间性能分析表:
3、分析与说明:
由算法时间复杂度表分析,起泡排序在最好情况下时间性能好,最坏情况和平均情况和选择排序一样,选择排序的时间性能都不高,均为O(n2),根据平均情况来看,快速排序和归并排序的时间性能一样,且最坏情况时归并排序优于快速排序。
对于随机数组序列,数组大小为10000,8000,5000时候,归并排序算法执行时间和快速排序时间都相对较短,简单选择排序缓慢,而起泡排序则是最耗时的。但是当数组由10000变到5000时,归并排序的时间性能变化不大,而快速排序时间性能提高很多,起泡排序时间性能下降慢,所以起泡排序在随机序列中的性能不高。
对于非递减数组序列,起泡排序时间消耗为均为0(0不代表没耗时,只是CPU处理速度太快,没法显示更精确的时间),而其他的快速排序,选择排序,归并排序和随机数组序列情况接近。所以起泡排序在非递减序列中的时间性能高。