数据结构与算法(算法特点,时间复杂度)
2020-03-08 11:43
906 查看
引入
例题:如果 a+b+c=1000,且 a2+b2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?
#枚举法 import time start_time = time.time() for a in range(0,1001): for b in range(0,1001): for c in range(0,1001): if a+b+c==1000 and a**2 +b**2 == c**2: print("a,b,c:%d,%d,%d"%(a,b,c)) end_time = time.time() print("times:%d"%(end_time-start_time)) print("finished")
算法的五大特性
- 输入: 算法具有0个或多个输入
- 输出: 算法至少有1个或多个输出
- 有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步 骤可以在可接受的时间内完成
- 确定性:算法中的每一步都有确定的含义,不会出现二义性
- 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成
import time start_time = time.time() for a in range(0,1001): for b in range(0,1001): c = 1000-a-b if a+b+c==1000 and a**2 +b**2 == c**2: print("a,b,c:%d,%d,%d"%(a,b,c)) end_time = time.time() print("times:%d"%(end_time-start_time)) print("finished")
时间复杂度
渐进函数:就是把系数和常数去掉(去掉所有相关系数,留下最特征的东西)
时间复杂度几条基本计算规则
- 基本操作,即只有常数项,认为其时间复杂度为O(1)
- 顺序结构,时间复杂度按加法进行计算
- 循环 结构,时间复杂度按乘法进行计算
- 分支结构,时间复杂度取最大值
- 判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
- 在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度
时间复杂度之间的关系:
list列表时间复杂度
dic字典时间复杂度
算法与数据结构的区别
数据结构只是静态的描述了数据元素之间的关系。
高效的程序需要在数据结构的基础上设计和选择算法。
程序 = 数据结构 + 算法
总结:算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- [数据结构与算法]-算法时间复杂度
- 数据结构与算法「鱼C笔记一,谈谈算法,时间复杂度」
- 数据结构与算法 —— 向量的扩容策略与分摊时间复杂度
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度。
- 常见算法情景的时间复杂度分析
- 算法时间复杂度
- 玩转算法面试-时间复杂度分析
- 算法的时间复杂度
- 算法时间复杂度分析
- 对高效率素数求解算法进行时间复杂度分析
- 算法的时间复杂度
- 算法时间复杂度计算
- Python习题:Python 判断是不是等差数列,要求算法时间复杂度为O(NlogN)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- Excel 取两页中相同的数据项算法一 时间复杂度O(n2)
- 数据结构-算法效率的度量-时间复杂度和空间复杂度
- 数据结构之概述(数据和算法基本概念,时间复杂度)
- 关于算法的时间复杂度
- 算法的时间复杂度