算法分析--数量级比较
一些程序片段的数量级及其所花时间的比较,极大程度的反应了算法优化程度越高,算法越优秀
#include <iostream>using namespace std;__int64 agorithm1(__int64 N) //第一个数量级为T(N)=O(N)
{__int64 sum = 0;for(__int64 i = 0; i < N; i++)sum++;return sum;
}__int64 agorithm2(__int64 N) //第二个数量级T(N)=O(N^2)
{__int64 sum = 0;for(__int64 i = 0; i < N; i++)for(__int64 j = 0; j < N; j++)sum++;return sum;
}__int64 agorithm3(__int64 N) //第三个数量级T(N)=O(N^3)
{__int64 sum = 0;for(__int64 i = 0; i < N; i++)for(__int64 j = 0; j < N * N; j++)sum++;return sum;
}__int64 agorithm4(__int64 N) //第四个数量级T(N)=O(N^2)
{__int64 sum = 0;for(__int64 i = 0; i < N; i++)for(__int64 j = 0; j < i; j++)sum++;return sum;
}__int64 agorithm5(__int64 N) //第五个数量级T(N)=O(N^5)
{__int64 sum = 0;for(__int64 i = 0; i < N; i++)for(__int64 j = 0; j < i * i; j++)for(__int64 k = 0; k < j; k++)sum++;return sum;
}__int64 agorithm6(__int64 N) //第六个数量级T(N)=O(N^4)
{__int64 sum = 0;for(__int64 i = 1; i < N; i++)for(__int64 j = 1; j < i * i; j++)if(j % i == 0)for(__int64 k = 0; k < j; k++)sum++;return sum;
}int main()
{int N = 1000;
//PS:注释去掉,选择算法
// cout<<agorithm1(N)<<endl;
// cout<<agorithm2(N)<<endl;
// cout<<agorithm3(N)<<endl;
// cout<<agorithm4(N)<<endl;
// cout<<agorithm5(N)<<endl;
// cout<<agorithm6(N)<<endl;return 0;
}
以下为比较统计出的表格:
agorithm1 | agorithm2 | agorithm3 | agorithm4 | agorithm5 | agorithm6 | |
Order of Magnitudes | T(N)=O(N) | T(N)=O(N^2) | T(N)=O(N^3) | T(N)=O(N^2) | T(N)=O(N^5) | T(N)=O(N^4) |
Running Time(T) | 0.695 | 0.83 | 0.847 | 0.87 | 12.213 | 1.748 |
Estimate Time(G) | 100 | 10000 | 1000000 | 10000 | 10000000000 | 100000000 |
T/G rate | 0.00695 | 0.000083 | 0.000000847 | 0.000087 | 0.0000000012213 | 0.00000001748 |
Running Time(T) | 0.803 | 0.91 | 14.882 | 1.022 | 120000 | 985.2 |
Estimate Time(G) | 1000 | 1000000 | 1000000000 | 1000000 | 1E+15 | 1E+12 |
T/G rate | 0.000803 | 0.00000091 | 0.000000014882 | 0.000001022 | 0.00000000012 | 0.0000000009852 |
算法分析--数量级比较相关推荐
- 算法分析(1)-增长数量级分类总结
算法分析(1) 1.总结,后面的解释其实可以不看 2 常见数量级的补充解释 (1)常数级别 (2)对数级别 (3)线性级别和线性对数级别 (4)平方级以及立方级别 (5)指数级别 3 综述 1.总结, ...
- python高斯求和_二、算法分析
一.什么是算法分析 程序和算法的区别: 算法是对问题解决的分步描述 程序是采用某种编程语言实现的算法,同一个算法通过不同的程序员采用不同的编程语言,能产生很多程序 算法分析的概念: 算法分析主要就是从 ...
- 复杂性思维中文第二版 附录 A、算法分析
附录 A.算法分析 原文:Appendix A Analysis of algorithms 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<Think Pyt ...
- 『算法』读书笔记 1.4算法分析 Part1
Chapter 1 本章结构 1.1Java语法 1.2数据抽象 1.3集合类抽象数据类型:背包 (Bags) .队列 (Queues) .栈 (Stacks) 1.4算法分析 1.5连通性问题-Ca ...
- Python数据结构与算法(1.7)——算法分析
Python数据结构与算法(1.7)--算法分析 0. 学习目标 1. 算法的设计要求 1.1 算法评价的标准 1.2 算法选择的原则 2. 算法效率分析 2.1 大 OOO 表示法 2.2 常见算法 ...
- 算法分析一:基础知识
1. 主要概念 1.1 算法概念 1.1.1 算法的理解 定义:在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程,通俗说,算法指解决问题的方法或过程. 三要素:算法由操作.控制结构.数据结 ...
- 算法分析----基础知识点
1.算法分析主要分析什么? 时间复杂度和空间复杂度?? 2.算法分析的目的是什么? 分析算法占用计算机资源的情况,对算法做出比较和评价,设计出更好的算法. 3.算法的时间复杂度与问题的什么因素相关? ...
- 1算法分析——数据结构与算法Python版学习笔记
什么是算法分析? 计算资源指标:一种是算法解决问题过程中需要的储存空间或内存,另一种是算法的执行时间 运行时间检测 time模块,获取计算机系统当前时间 例如: 方法一:累计求和程序的运行时间检测 i ...
- 分治法的计算时间、时间复杂度推导以及经典算法分析
分治是一种解决复杂问题的思想,它可以将一个问题划分成多个小的问题,通过合并这些问题求得原问题的解.本文对分治法进行复杂性分析,并通过这种方法分析几个具体算法的时间复杂度. 文章目录 1 分治法的复杂性 ...
最新文章
- 关于地图中轨迹的平滑移动的实现
- 32位数据源中没有mysql_如何在.NET中连接到MySQL数据库
- C语言 · 贪心算法
- 【Python】这款拓展让你的jupyter lab使用更高效
- java static方法
- linux-分区与硬盘-实战:添加新硬盘
- python函数库 阶跃 信号函数 调用_有没有大神知道 step2 阶跃响应函数的 里面的T的怎么定义...
- java连接mysql实现增删改查_JDBC之Java连接mysql实现增删改查
- 请求方报超时,服务日志中记录的时间却少有超时
- LeetCode 47. Permutations II
- 程序员斗图时最爱用哪些表情包?拿走不谢!
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_20-CMS前端页面查询开发-页面原型-页面内容完善...
- 图像与矩阵_Python_No.3
- 零基础如何入门数据分析师?
- mybatis 链接DB2查询报错,必需的字符转换器不可用。 ERRORCODE=-4220, SQLSTATE=null
- 嵌入式--Flash操作中的标准SPI,Dual SPI,Quad SPI
- 2022年免费企业邮箱大全,用免费邮箱发邮件安全吗?
- 敏捷开发中,团队成员认领的是任务还是用户故事?
- TW6869 drivers porting for freescaleandroid
- 端云协同,打造更易用的AI计算平台
热门文章
- mysql basic_MySQL Basic Learning (二)
- 根据用户查进程_Linux中的系统进程管理
- egg框架访问 Mysql 数据库 egg-mysql 增删改查
- 小米无缝切换60hz/90hz/120hz/144hz刷新率!
- leetcode 最长回文子串
- 响应式滑动菜单_如何创建响应式滑动菜单
- git 初始化git存储库_什么不保存到Git存储库中
- heroku服务器_如何在Heroku上使用Express服务器部署React应用
- postman电脑版无法安装_CPU使用率高达100%?试试安装Win10 2004版,旧电脑也能运行如飞...
- 利用Python来玩扫雷,极致的思维体验