目录

  • 一、算法的概念
    • 1.1 算法是计算机处理信息的本质
  • 二、时间复杂度T(n)
    • 2.1 程序执行的基本操作与时间复杂度
    • 2.3 大O记法
    • 2.4 常见时间复杂度
    • 2.5 时间复杂度的几条基本计算规则(重点)
    • 2.6 python内置类型时间复杂度:

一、算法的概念

  • 算法是计算机处理信息的本质。
  • 对于算法而言,实现的语言并不重要,重要的是思想。

1.1 算法是计算机处理信息的本质

  • 输入: 算法具有0个或多个输入
  • 输出: 算法至少有1个或多个输出
  • 有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成
  • 确定性:算法中的每一步都有确定的含义,不会出现二义性
  • 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成

二、时间复杂度T(n)

  • 时间复杂度概念:假定计算机执行算法每一个基本操作的时间是固定的一个时间单位,那么有多少个基本操作就代表会花费多少时间单位。
  • 分类:
  1. 最优时间复杂度:算法完成工作最少需要多少基本操作;
  2. 最坏时间复杂度:算法完成工作最多需要多少基本操作;
  3. 平均时间复杂度:算法完成工作平均需要多少基本操作。

时间复杂度通常指的是最坏时间复杂度。

2.1 程序执行的基本操作与时间复杂度

  • 顺序操作:顺序操作的时间复杂度是把时间单位相加。
  • 分支(判断)操作:时间复杂度是取时间单位最大值。
  • 循环操作:时间复杂度是按时间单位相乘。

2.3 大O记法

  • 时间复杂度去掉系数、常数项。如:2→O(2),2n²→O(n²),2n+3→O(n)

2.4 常见时间复杂度

经常将log2n(以2为底的对数)简写成logn。

  • 时间复杂度耗时关系:O(1) < O(logn) < O(n) < O(nlogn) < O(n²) < O(n^3) < O(2 ^n) < O(n!) < O(n ^ n)

2.5 时间复杂度的几条基本计算规则(重点)

  1. 基本操作,即只有常数项,认为其时间复杂度为O(1)
  2. 顺序结构,时间复杂度按加法进行计算
  3. 循环结构,时间复杂度按乘法进行计算
  4. 分支结构,时间复杂度取最大值
  5. 判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
  6. 在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度

2.6 python内置类型时间复杂度:

  • list常用:indexx[ ]、append、pop( )、pop(i)、insert(i, item)

  • list时间复杂度:

  • dict时间复杂度

Python之算法与时间复杂度相关推荐

  1. python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)

    算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上, ...

  2. Python数据结构与算法(一)--算法和时间复杂度

    最近下班一直在学习和总结Python,最近在整理数据结构和算法这方面的知识,虽然大学的时候也学过数据结构(c语言版本),但是工作这几年一直在做前端所以,这方面的知识也忘了差不多,所以就想整理一下,方便 ...

  3. python时间复杂度怎么算_python学习:算法和时间复杂度

    python学习:算法和时间复杂度 算法 什么是算法? 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制. 算法也可以 ...

  4. python二分查找时间复杂度_二分查找算法的时间复杂度计算(logN)

    二分查找算法的时间复杂度计算(logN) 马富天 2019-08-10 20:25:24 54 [摘要]二分查找算法是对顺序查找算法的优化,二分查找算法的前提是数列是一个有序数列,递增或者递减,本文就 ...

  5. 算法的时间复杂度(python版容易理解)+常用的时间复杂度、python代码--数据结构

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 一.算法时间 ...

  6. GitHub超4.1万星,最全Python入门算法来了

    本文来自公众号:超级数学建模 微信号 :supermodeling 今天,阿广给大家推荐一个好资源,一个在 Github 上超过 2.7 万星标的项目:最全算法及Python实现. 该项目主要包括两方 ...

  7. 【转】算法中时间复杂度概括——o(1)、o(n)、o(logn)、o(nlogn)

    2019独角兽企业重金招聘Python工程师标准>>> 在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度.这里进行归纳 ...

  8. python 冒泡排序算法(超级详细)

    一.什么是冒泡排序 冒泡排序是一种简单的排序算法,它也是一种稳定排序算法.其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换.一直重复这个过程,直到没有任何两个相邻 ...

  9. 时间复杂度为on的排序算法_排序算法amp;时间复杂度计算

    对于排序算法而言,有几个重要的点: 理解此种排序算法是怎么运行的 理解算法的时间复杂度与空间复杂度计算 递推公式(关乎时间复杂度的计算) 递推公式主要为以下的形式(递归使用的复杂度也这么算): 具体推 ...

最新文章

  1. oracle复合索引介绍(多字段索引)
  2. mysql有实例名这个概念,MySQL的一些概念笔记
  3. html控制按钮里面的文字,有谁可以告诉我web网页制作中通过三个按钮控制页面上的一段文字放? 爱问知识人...
  4. C++ 异常类型以及多级catch匹配
  5. 吃糖果(HDU-1205)
  6. iphone相册怎么加密_苹果手机怎么加密相册?苹果手机照片加密的方法介绍
  7. 什么样的文章更容易被推荐?
  8. JSK-2 整除问题【入门】
  9. iptables 执行清除命令 iptables -F 要非常小心的
  10. CocosCreator如何制作微信小游戏
  11. It was either not specified and/or could not be found for the javaType (java.util.List) : jdbcType
  12. python进阶day13
  13. 计算机软件系统 七年级,系统软件作用大七年级信息技术教案(5页)-原创力文档...
  14. linux samba yum,CentOS7下yum安装SAMBA全命令过程
  15. 《王者荣耀游戏服务器架构演进(完整版)》读后感
  16. mysql assoc什么意思_mysql_fetch_assoc 报错
  17. Excel应用-使用VBA自动绘制所有适用类型的Excel图表(代码及效果图)
  18. kafka-分区重分配及相关源码分析
  19. 苹果手机sim卡无效怎么办_工信部提醒及时设置SIM卡密码有用吗,手机被盗该怎么办,盗走个人信息危害大吗?- 今日头条...
  20. 中望3D 2021 轴类零件灵活自动螺纹收尾

热门文章

  1. 同舟共济,志愿“疫”冬
  2. ApexCharts使用示例 -- 多图表同时执行交互操作
  3. Pandas提取数据的几种方式
  4. v-html解析后台传来的html 含有script标签 将js当成字符串来编译咋办
  5. 网易、华为、美团java工程师社招面经!
  6. 公有云开辟to B第二战场,看看谁更牛?
  7. ignite可视化工具dbheaver
  8. python爬取豆瓣排名前250部电影封面
  9. Linux基础——打包压缩和系统管理
  10. docker的安装及配置加速器