
算法效率-时间复杂度
发布日期:2021-05-09 00:16:44
浏览次数:23
分类:博客文章
本文共 715 字,大约阅读时间需要 2 分钟。
算法效率的度量方法
事后统计
直接跑了比较时间,这个方法用的比较少,不推荐。
事前分析估算
在计算机程序编写前,以拒统计方法来估算
因素:
1.算法的策略和方法
2.编译产生的代码质量
3.问题的输入规模
4.机器执行指令的速度
只需要关心实现的算法
时间复杂度:大O阶方法:
计算公式
T(n) = O(f(n))
n为问题的规模,f(n)为语句关于n所占存储空间的函数。
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)增长率相同,称做算法的渐进时间复杂度,又叫时间复杂度
分析时间复杂度O阶方法:
1.用常数1取代运行时间中的所有加法常数:
好比printf,x+=1
2.在修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在且不是1,通通保留为1
特殊:
对于对数阶:
比如 需要 2^x = n退出循环,那么x = log(2)n 所以时间复杂度就是O(logn)这里的底数表示所有底数
函数调用的时间复杂度:
直接把所有的立出来,然后取最高采用大O阶计算方法的就完事了
常用的时间复杂度
最坏情况和平均情况:
如果说一来就直接把目的flag找到了,那么O(1)最坏就是最后才找到就是O(n)
平均运行时间是期望的运行时间
空间复杂度
空间复杂度是可以和时间复杂度互相交换的,可以通过牺牲空间复杂度而降低时间复杂度,或者相反。
S(n) = O(f(n))公式和时间复杂度公式相近。
通常用时间复杂度来指运行时间的需求,用空间复杂度来表示空间的需求。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月08日 21时26分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
c++中ifstream及ofstream超详细说明
2021-05-08
web项目配置
2021-05-08
基于单片机简易信号误差分析设计-全套资料
2021-05-08
基于单片机简易脉搏测量仪系统设计-毕设课设资料
2021-05-08
Javascript中String支持使用正则表达式的四种方法
2021-05-08
Servlet2.5的增删改查功能分析与实现------删除功能(四)
2021-05-08
spring启动错误:Could not resolve placeholder
2021-05-08
invalid byte sequence for encoding
2021-05-08
技术美术面试问题整理
2021-05-08
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
js求阶乘
2021-05-08
Nginx---惊群
2021-05-08
项目中常用的审计类型概述
2021-05-08
(九)实现页面底部购物车的样式
2021-05-08
python-day3 for语句完整使用
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08