算法的时间复杂度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南华大学
计算机科学与技术学院实验报告
(2013~2014 学年度第二学期)
课程名称算法设计与分析
实验名称算法的时间复杂度
姓名学号
专业班级
地点教师
实验一算法的时间复杂度
一、实验目的与要求
熟悉C/C++语言的集成开发环境;
通过本实验加深对算法分析基础知识的理解。
二、实验内容:
掌握算法分析的基本方法,并结合具体的问题深入认识算法的时间复杂度分析。三、实验题
定义一个足够大的整型数组,并任意选择三种不同的排序算法对数组中的数据进行排序(按从小到大的顺序排序),记录每种算法的实际耗时,并结合数据结构中的知识对算法的时间复杂度分析进行说明。实验数据分两种情况进行比较:
1、数组中的数据随机生成;
2、数组中的数据已经是非递减有序。
四、实验步骤
理解算法思想和问题要求;
编程实现题目要求;
上机输入和调试自己所编的程序;
验证分析实验结果;
整理出实验报告。
、
五、实验程序
#include
#include
#include
#include
using namespace std;
void BubbleSort(int arr[],int n);
void QuickSort(int arr[],int left,int right);
void SelectSort(int arr[],int n);
int Partition(int arr[],int left,int right);
const int ARRAY_MAXSIZE=10000; //定义数组最大长度
int main(int argc,char *argv[]){
int array_Sort[ARRAY_MAXSIZE];
int array_Sort2[ARRAY_MAXSIZE];
for(int i=0;i<=ARRAY_MAXSIZE;i++){ //生成随机数组
array_Sort[i]=rand()%500;
}
for(int j=0;j array_Sort2[j]=j; } clock_t start,end; start=clock(); BubbleSort(array_Sort,ARRAY_MAXSIZE); //起泡排序算法测试end=clock(); cout<<"随机数组起泡排序测试耗时为:"; cout<<(double)(end-start)<<" ms"< start=clock(); QuickSort(array_Sort,0,ARRAY_MAXSIZE-1); //快速排序算法测试end=clock(); cout<<"随机数组快速排序测试耗时为:"; cout<<(double)(end-start)<<" ms"< start=clock(); SelectSort(array_Sort,ARRAY_MAXSIZE); //选择排序算法测试end=clock(); cout<<"随机数组选择排序测试耗时为:"; cout<<(double)(end-start)<<" ms"< cout< start=clock(); BubbleSort(array_Sort,ARRAY_MAXSIZE); end=clock(); cout<<"非递减数组起泡排序测试耗时为:"; cout<<(double)(end-start)<<" ms"< start=clock(); QuickSort(array_Sort,0,ARRAY_MAXSIZE-1); end=clock(); cout<<"非递减数组快速排序测试耗时为:"; cout<<(double)(end-start)<<" ms"< start=clock(); SelectSort(array_Sort,ARRAY_MAXSIZE); end=clock(); cout<<"非递减数组用选择排序测试耗时为:"; cout<<(double)(end-start)<<" ms"< system("pause"); return 0; } //起泡排序的定义 void BubbleSort(int arr[],int n) { int exchange=n; int bound=0; int temp=0; while(exchange){ bound=exchange; exchange=0; for(int i=0;i if(arr[i]>arr[i+1]){ temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; exchange=i; } } } } //快速排序的定义 void QuickSort(int arr[],int left,int right) { if(left QuickSort(arr,left,pivot-1); QuickSort(arr,pivot+1,right);