第一范文网 - 专业文章范例文档资料分享平台

算法时间复杂度分析:排序

来源:用户分享 时间:2025/5/28 13:11:51 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

算法复杂度分析

作业内容:

选择两个以上(含两个)解决同一个问题的算法,以相同的数据作为输入,分析在自己电脑上实际运行时间,对不同算法时间复杂度的事前分析进行验证。验证方案与数据自行设计(注意数据规模,如果数据规模太小可能监测不到耗时,另外注意递归算法,递归次数太多也可能没有结果和时间输出)。 比如:选择三种排序算法,对同一组初始数据进行排序,检测每种算法排序时所消耗的时间,查看结果是否与已知的算法时间复杂度分析相符。

作业请以一个word或wps格式的文档作为附件提交,文档包含三部分内容:方案设计、程序代码(粘贴入文档中)、运行结果及分析。 作业思路:

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

冒泡排序、快速排序 随机数生成: 代码:

#include #include #include #include

using namespace std;

int main() { freopen(\ srand(time(NULL)); int t=100; while(t--) { int n; n=1000; printf(\ for(int i=0;i

冒泡排序:

#include #include #include #include

#define MAX_N 100100

using namespace std;

int a[MAX_N];

int main() { long long start,finish; freopen(\ freopen(\ int n; start=clock(); while(~scanf(\ { for(int i=0;ia[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(int i=0;i

}

return 0;

快速排序:

#include #include #include #include

#define MAX_N 100100

using namespace std;

int a[MAX_N];

void quick(int l, int r) { if (l< r) { int i = l, j = r, x = a[l]; while (i < j) { while(i < j && a[j]>= x) j--; if(i < j) a[i++] = a[j]; while(i < j && a[i]< x) i++; if(i < j) a[j--] = a[i]; } a[i] = x; quick(l, i - 1); quick(i + 1, r); } }

int main() { long long start,finish; freopen(\ freopen(\ start=clock();

}

int n;

while(~scanf(\{ for(int i=0;i

finish=clock();

printf(\return 0;

结果截图:

1

data.cpp:

搜索更多关于: 算法时间复杂度分析:排序 的文档
算法时间复杂度分析:排序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c644gd3084i3h0qr03o7a_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top