我们先来看几个概念

1、算法

算法:一种解决问题的方法和思想

2、时间复杂度

计算 1 + 2 + 3 + … + 100

先看下面这段代码:

tot = 0
for x in range(1,101):tot += x
print(tot)

分析:

进入循环体后,tot += x 等价于 tot = tot + x

tot + x为一个基本运算

=赋值运算符为一个基本运算

循环体执行了 100次,则程序一共执行100 * 2个基本步骤

如果我们要计算1000以内的自然数之和,那么只需要修改成以下代码:

tot = 0
for x in range(1,1001):tot += x
print(tot)

程序需要执行1000 * 2个基本步骤

通过上面的例子,我们知道100次,1000次只是问题计算规模的大小,那么我们就定义一个变量n来代表计算问题的规模

什么是时间复杂度?

时间复杂度就是程序执行的基本步骤

时间复杂度分析

tot = 0
for x in range(1,101):tot += x
print(tot)

这段代码的时间复杂度为100 * 2

对于计算n以内的自然数之和,时间复杂度为 2 * n,记作:

T(n) = 2 * n

n : 代表计算问题的规模大小

3、大O记法

实际应用中,我们并不关心其具体的实际执行步骤,而是更加关心数量级和趋势,认为T(n) = 2 * nT(n) = n 是同一个数量级的,都是n

什么是大O记法

大O记法就是忽略次要项和常数项

T(n) = 2 * n 的大O记法就是 O(n) = n

常见时间复杂度

时间复杂度举例 大O表示法 术语
12 O(1) 常数阶
2n+3 O(n) 线性阶
3n2+2n+1 O(n2) 平方阶
5log2n+20 O(logn) 对数阶
2n+3nlog2n+19 O(nlogn) nlogn阶
6n3+2n2+3n+4 O(n3) 立方阶
2n O(2n) 指数阶

python 数据结构与算法(第一篇)相关推荐

  1. Python天天美味(32) - python数据结构与算法之堆排序

    1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data):     for i in ran ...

  2. Python数据结构与算法(二)栈和队列

    本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...

  3. Python数据结构与算法(一)列表和元组

    本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...

  4. Python数据结构与算法(1.7)——算法分析

    Python数据结构与算法(1.7)--算法分析 0. 学习目标 1. 算法的设计要求 1.1 算法评价的标准 1.2 算法选择的原则 2. 算法效率分析 2.1 大 OOO 表示法 2.2 常见算法 ...

  5. Python数据结构与算法(1.1)——数据结构与算法导论

    Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...

  6. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

    python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...

  7. [FreeCodeCamp笔记] Python 数据结构和算法1 二分搜索 Binary Search

    我以前学过数据结构和算法(data structure and algorithms. 现在普遍简称DSA),当时用的Robert Sedgewick的coursera课程.这位大神写的<算法( ...

  8. 视频教程-Python数据结构与算法面试(上)-Python

    Python数据结构与算法面试(上) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过1 ...

  9. Python数据结构与算法_9_有序链表

    前情提要:Python数据结构与算法_8_链表.无序链表 接下来我们研究有序链表. 什么是有序链表 如果给定一个链表,他的节点数据元素都是的整数,如77, 26, 31, 93, 17, 54.如果这 ...

  10. Python之路【第一篇】:Python简介和入门

    Python之路[第一篇]:Python简介和入门 Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗 ...

最新文章

  1. 如何设置VSS源代码管理工具使用KDiff3
  2. MonolithFirst:单体应用优先策略
  3. NEO从源码分析看网络通信
  4. 【收藏】goland报错:报错package xxx is not in GOROOT or GOPATH 或者 cannot find package “xxx“ in any of
  5. 怎样才能让Android平板不卡,如何让你的安卓平板从获新生
  6. linux 安装软件的几种方法
  7. 在WildFly上将JPA和CDI Bean与骆驼一起使用
  8. spring源码阅读--@Transactional实现原理
  9. vue-cli搭建项目(笔记)
  10. 华为P50 Pro最新渲染图曝光:后置造型有点奇怪
  11. sqlserver 调优(三)
  12. 以太坊PoA共识引擎算法介绍(1)
  13. 简单servlet和jdbc回顾
  14. MVC如何分离Controller与View在不同的项目
  15. sendkeys安装包_利用Windows命令行解压zip压缩文件(不借助第三方软件)
  16. 白盒测试的逻辑覆盖辨析(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)
  17. 我用一根网线,制霸了宿舍的网络!
  18. python中unicode编码的url如何正确解码
  19. 计算机开机发出长滴,在电脑开机时滴的一声,怎么去掉
  20. 流量矿石团队成员出席“区块链技术与金融领域创新应用培训会”

热门文章

  1. Genymotion安卓模拟器和VirtualBox虚拟机安装、配置、测试(win7_64bit)
  2. 作文计算机的坏处,关于玩电脑的坏处的作文300字(共8篇)
  3. c语言程序设计北京大学出版社,C语言程序设计案例教程
  4. 关于路由器多个WAN口时的路由表维护
  5. Office 2003 打开太慢的9种解决方法
  6. 大一英专考计算机,准大一英专生|不看你一定会后悔的暑假逆袭攻略
  7. `在mysql中是什么含义
  8. webots学习笔记
  9. 深入理解查准率与查全率
  10. 如何按文件类型分类保存到各个目录文件夹