算法时间复杂度分析排序.docx

上传人:b****4 文档编号:7025188 上传时间:2023-05-11 格式:DOCX 页数:21 大小:633.38KB
下载 相关 举报
算法时间复杂度分析排序.docx_第1页
第1页 / 共21页
算法时间复杂度分析排序.docx_第2页
第2页 / 共21页
算法时间复杂度分析排序.docx_第3页
第3页 / 共21页
算法时间复杂度分析排序.docx_第4页
第4页 / 共21页
算法时间复杂度分析排序.docx_第5页
第5页 / 共21页
算法时间复杂度分析排序.docx_第6页
第6页 / 共21页
算法时间复杂度分析排序.docx_第7页
第7页 / 共21页
算法时间复杂度分析排序.docx_第8页
第8页 / 共21页
算法时间复杂度分析排序.docx_第9页
第9页 / 共21页
算法时间复杂度分析排序.docx_第10页
第10页 / 共21页
算法时间复杂度分析排序.docx_第11页
第11页 / 共21页
算法时间复杂度分析排序.docx_第12页
第12页 / 共21页
算法时间复杂度分析排序.docx_第13页
第13页 / 共21页
算法时间复杂度分析排序.docx_第14页
第14页 / 共21页
算法时间复杂度分析排序.docx_第15页
第15页 / 共21页
算法时间复杂度分析排序.docx_第16页
第16页 / 共21页
算法时间复杂度分析排序.docx_第17页
第17页 / 共21页
算法时间复杂度分析排序.docx_第18页
第18页 / 共21页
算法时间复杂度分析排序.docx_第19页
第19页 / 共21页
算法时间复杂度分析排序.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

算法时间复杂度分析排序.docx

《算法时间复杂度分析排序.docx》由会员分享,可在线阅读,更多相关《算法时间复杂度分析排序.docx(21页珍藏版)》请在冰点文库上搜索。

算法时间复杂度分析排序.docx

算法时间复杂度分析排序

算法复杂度分析

作业内容:

选择两个以上(含两个)解决同一个问题的算法,以相同的数据作为输入,分析在自己电脑上实际运行时间,对不同算法时间复杂度的事前分析进行验证。

验证方案与数据自行设计(注意数据规模,如果数据规模太小可能监测不到耗时,另外注意递归算法,递归次数太多也可能没有结果和时间输出)。

比如:

选择三种排序算法,对同一组初始数据进行排序,检测每种算法排序时所消耗的时间,查看结果是否与已知的算法时间复杂度分析相符。

作业请以一个word或wps格式的文档作为附件提交,文档包含三部分内容:

方案设计、程序代码(粘贴入文档中)、运行结果及分析。

作业思路:

先利用随机数函数生成大量数据,再通过调用time.h中的clock()函数,及CLOCK_PRE_SECOND值,对程序运行时间进行计算,之后对算法进行复杂度分析。

所选算法:

冒泡排序、快速排序

代码:

随机数生成:

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

freopen("in.in","w",stdout);

srand(time(NULL));

intt=100;

while(t--)

{

intn;

n=1000;

printf("%d\n",n);

for(inti=0;i

{

printf("%d",rand()%100000000+1);

}

printf("\n");

}

return0;

}

 

冒泡排序:

#include

#include

#include

#include

#defineMAX_N100100

usingnamespacestd;

inta[MAX_N];

intmain()

{

longlongstart,finish;

freopen("in.in","r",stdin);

freopen("bubble.out","w",stdout);

intn;

start=clock();

while(~scanf("%d",&n))

{

for(inti=0;i

{

scanf("%d",&a[i]);

}

for(inti=0;i

{

for(intj=0;j

{

if(a[j]>a[j+1])

{

inttemp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

for(inti=0;i

printf("%d",a[i]);

printf("\n");

}

finish=clock();

printf("RunTime=%.3lfs\n",(double)(finish-start)/CLOCKS_PER_SEC);

return0;

}

 

快速排序:

#include

#include

#include

#include

#defineMAX_N100100

usingnamespacestd;

inta[MAX_N];

voidquick(intl,intr)

{

if(l

{

inti=l,j=r,x=a[l];

while(i

{

while(i=x)

j--;

if(i

a[i++]=a[j];

while(i

i++;

if(i

a[j--]=a[i];

}

a[i]=x;

quick(l,i-1);

quick(i+1,r);

}

}

intmain()

{

longlongstart,finish;

freopen("in.in","r",stdin);

freopen("quick.out","w",stdout);

start=clock();

intn;

while(~scanf("%d",&n))

{

for(inti=0;i

{

scanf("%d",&a[i]);

}

quick(0,n-1);

for(inti=0;i

printf("%d",a[i]);

printf("\n");

}

finish=clock();

printf("RunTime=%.3lfs\n",(double)(finish-start)/CLOCKS_PER_SEC);

return0;

}

结果截图:

1

data.cpp:

 

In.in:

Quick.out

快速排序时间:

Bubble.out:

冒泡排序时间:

 

1

data.cpp:

 

In.in:

Quick.out

快速排序时间:

Bubble.out:

冒泡排序时间:

 

1

data.cpp:

 

In.in:

Quick.out

快速排序时间:

Bubble.out:

冒泡排序时间:

 

1

data.cpp:

 

In.in:

Quick.out

快速排序时间:

Bubble.out:

冒泡排序时间:

 

冒泡排序时间复杂度O(n2),快速排序时间复杂度O(nlog(n)),上面分别列出n在[1-100],[1-1000][1-10000],[1-100000]时100组数据的排序耗费的时间。

可以看出冒泡排序非常耗时,而快速排序快得多。

两种排序时间基本符合n2和nlog(n)的增长速率。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2