算法的时间复杂度

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档