Python之算法与时间复杂度
目录
- 一、算法的概念
- 1.1 算法是计算机处理信息的本质
- 二、时间复杂度T(n)
- 2.1 程序执行的基本操作与时间复杂度
- 2.3 大O记法
- 2.4 常见时间复杂度
- 2.5 时间复杂度的几条基本计算规则(重点)
- 2.6 python内置类型时间复杂度:
一、算法的概念
- 算法是计算机处理信息的本质。
- 对于算法而言,实现的语言并不重要,重要的是思想。
1.1 算法是计算机处理信息的本质
- 输入: 算法具有0个或多个输入
- 输出: 算法至少有1个或多个输出
- 有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成
- 确定性:算法中的每一步都有确定的含义,不会出现二义性
- 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成
二、时间复杂度T(n)
- 时间复杂度概念:假定计算机执行算法每一个基本操作的时间是固定的一个时间单位,那么有多少个基本操作就代表会花费多少时间单位。
- 分类:
- 最优时间复杂度:算法完成工作最少需要多少基本操作;
- 最坏时间复杂度:算法完成工作最多需要多少基本操作;
- 平均时间复杂度:算法完成工作平均需要多少基本操作。
时间复杂度通常指的是最坏时间复杂度。
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 时间复杂度的几条基本计算规则(重点)
- 基本操作,即只有常数项,认为其时间复杂度为O(1)
- 顺序结构,时间复杂度按加法进行计算
- 循环结构,时间复杂度按乘法进行计算
- 分支结构,时间复杂度取最大值
- 判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
- 在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度
2.6 python内置类型时间复杂度:
list常用:indexx[ ]、append、pop( )、pop(i)、insert(i, item)
list时间复杂度:
dict时间复杂度
Python之算法与时间复杂度相关推荐
- python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)
算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上, ...
- Python数据结构与算法(一)--算法和时间复杂度
最近下班一直在学习和总结Python,最近在整理数据结构和算法这方面的知识,虽然大学的时候也学过数据结构(c语言版本),但是工作这几年一直在做前端所以,这方面的知识也忘了差不多,所以就想整理一下,方便 ...
- python时间复杂度怎么算_python学习:算法和时间复杂度
python学习:算法和时间复杂度 算法 什么是算法? 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制. 算法也可以 ...
- python二分查找时间复杂度_二分查找算法的时间复杂度计算(logN)
二分查找算法的时间复杂度计算(logN) 马富天 2019-08-10 20:25:24 54 [摘要]二分查找算法是对顺序查找算法的优化,二分查找算法的前提是数列是一个有序数列,递增或者递减,本文就 ...
- 算法的时间复杂度(python版容易理解)+常用的时间复杂度、python代码--数据结构
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 一.算法时间 ...
- GitHub超4.1万星,最全Python入门算法来了
本文来自公众号:超级数学建模 微信号 :supermodeling 今天,阿广给大家推荐一个好资源,一个在 Github 上超过 2.7 万星标的项目:最全算法及Python实现. 该项目主要包括两方 ...
- 【转】算法中时间复杂度概括——o(1)、o(n)、o(logn)、o(nlogn)
2019独角兽企业重金招聘Python工程师标准>>> 在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度.这里进行归纳 ...
- python 冒泡排序算法(超级详细)
一.什么是冒泡排序 冒泡排序是一种简单的排序算法,它也是一种稳定排序算法.其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换.一直重复这个过程,直到没有任何两个相邻 ...
- 时间复杂度为on的排序算法_排序算法amp;时间复杂度计算
对于排序算法而言,有几个重要的点: 理解此种排序算法是怎么运行的 理解算法的时间复杂度与空间复杂度计算 递推公式(关乎时间复杂度的计算) 递推公式主要为以下的形式(递归使用的复杂度也这么算): 具体推 ...
最新文章
- oracle复合索引介绍(多字段索引)
- mysql有实例名这个概念,MySQL的一些概念笔记
- html控制按钮里面的文字,有谁可以告诉我web网页制作中通过三个按钮控制页面上的一段文字放? 爱问知识人...
- C++ 异常类型以及多级catch匹配
- 吃糖果(HDU-1205)
- iphone相册怎么加密_苹果手机怎么加密相册?苹果手机照片加密的方法介绍
- 什么样的文章更容易被推荐?
- JSK-2 整除问题【入门】
- iptables 执行清除命令 iptables -F 要非常小心的
- CocosCreator如何制作微信小游戏
- It was either not specified and/or could not be found for the javaType (java.util.List) : jdbcType
- python进阶day13
- 计算机软件系统 七年级,系统软件作用大七年级信息技术教案(5页)-原创力文档...
- linux samba yum,CentOS7下yum安装SAMBA全命令过程
- 《王者荣耀游戏服务器架构演进(完整版)》读后感
- mysql assoc什么意思_mysql_fetch_assoc 报错
- Excel应用-使用VBA自动绘制所有适用类型的Excel图表(代码及效果图)
- kafka-分区重分配及相关源码分析
- 苹果手机sim卡无效怎么办_工信部提醒及时设置SIM卡密码有用吗,手机被盗该怎么办,盗走个人信息危害大吗?- 今日头条...
- 中望3D 2021 轴类零件灵活自动螺纹收尾