Python(算法)-时间复杂度和空间复杂度

时间复杂度

算法的时间复杂度是一个函数,它定量描述了该算法的运行时间,时间复杂度常用“O”表述,使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况

时间复杂度是用来估计算法运行时间的一个式子(单位),一般来说,时间复杂度高的算法比复杂度低的算法慢

print(‘Hello world‘)  # O(1)

# O(1)
print(‘Hello World‘)
print(‘Hello Python‘)
print(‘Hello Algorithm‘)

for i in range(n):  # O(n)
	print(‘Hello world‘)

for i in range(n):  # O(n^2)
	for j in range(n):
		print(‘Hello world‘)

for i in range(n):  # O(n^2)
	print(‘Hello World‘)
	for j in range(n):
		print(‘Hello World‘)

for i in range(n):  # O(n^2)
	for j in range(i):
		print(‘Hello World‘)

for i in range(n):
	for j in range(n):
		for k in range(n):
			print(‘Hello World‘)  # O(n^3)

几次循环就是n的几次方的时间复杂度

n = 64
while n > 1:
	print(n)
	n = n // 2

26 = 64,log264 = 6,所以循环减半的时间复杂度为O(log2n),即O(logn)

如果是循环减半的过程,时间复杂度为O(logn)或O(log2n)

常见的时间复杂度高低排序:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)

空间复杂度

空间复杂度:用来评估算法内存占用大小的一个式子

a = ‘Python‘  # 空间复杂度为1

# 空间复杂度为1
a = ‘Python‘
b = ‘PHP‘
c = ‘Java‘

num = [1, 2, 3, 4, 5]  # 空间复杂度为5

num = [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]  # 空间复杂度为5*4

num = [[[1, 2], [1, 2]], [[1, 2], [1, 2]] , [[1, 2], [1, 2]]]  # 空间复杂度为3*2*2

定义一个或多个变量,空间复杂度都是为1,列表的空间复杂度为列表的长度

原文地址:https://www.cnblogs.com/sch01ar/p/8552295.html

时间: 2024-10-12 11:44:53

Python(算法)-时间复杂度和空间复杂度的相关文章

算法时间复杂度和空间复杂度

一.时间复杂度 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,今儿分析T(n)随n的变化情况并确定T(n)的数量.算法的时间复杂度,也就是算法的时间量度,T(n)=O(f(n)), 它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度.其中f(n)是问题规模n的某个函数. O(1) 常数阶 O(n) 线性阶 O(n2)  平方阶 1.推导大O阶方法 用常数1取代运行时间总的所有加法常数 在修改后的运行次数函数中,只保留

常用排序算法时间复杂度和空间复杂度简析

1. preface /**** *    This article will try to explain something about: *        --Bubble sort. *        --Quick sort. *        --Merge sort. *        --Heap sort. *    To read this, some prerequisites is necessary: *        --a survive skill in C pr

【405】算法时间复杂度和空间复杂度的计算

参考:算法时间复杂度和空间复杂度的计算 时间复杂度计算 去掉运行时间中的所有加法常数.(例如 n2+n+1,直接变为 n2+n) 只保留最高项.(n2+n 变成 n2) 如果最高项存在但是系数不是1,去掉系数.(n2 系数为 1) 原文地址:https://www.cnblogs.com/alex-bn-lee/p/11044540.html

算法时间复杂度和空间复杂度详解

算法的时间复杂度和空间复杂度合称为算法的复杂度. 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时

数据结构和算法-时间复杂度和空间复杂度

[算法时间复杂度的定义] 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n)).它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度.其中f(n)是问题规模n的某个函数. 即:执行次数=时间 [如何分析一个算法的时间复杂度?即:如何推到大O阶呢?] -用常数1取代运行时间中的所有加法常数 -在修改

算法-时间复杂度和空间复杂度

没有做过上百遍面试题,就不会知道生活的压力有多大 一.算法的时间复杂度和空间复杂度合称为算法的复杂度 1.时间频度: 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道. 但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了. 并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多. 一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). 2.时间复杂度: 在刚才提到的时间频

Python语言算法的时间复杂度和空间复杂度

算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度). 简单来说,时间复杂度指的是语句执行次数,空间复杂度指的是算法所占的存储空间 计算时间复杂度的方法: 用常数1代替运行时间中的所有加法常数 修改后的运行次数函数中,只保留最高阶项 去除最高阶项的系数 按数量级递增排列,

算法的时间复杂度和空间复杂度

<算法的时间复杂度和空间复杂度合称为算法的复杂度> --->算法的时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模

数据结构和算法之时间复杂度和空间复杂度

前言 上一篇<数据结构和算法>中我介绍了数据结构的基本概念,也介绍了数据结构一般可以分为逻辑结构和物理结构.逻辑结构分为集合结构.线性结构.树形结构和图形结构.物理结构分为顺序存储结构和链式存储结构.并且也介绍了这些结构的特点.然后,又介绍了算法的概念和算法的5个基本特性,分别是输入.输出.有穷性.确定性和可行性.最后说阐述了一个好的算法需要遵守正确性.可读性.健壮性.时间效率高和存储量低.其实,实现效率和存储量就是时间复杂度和空间复杂度.本篇我们就围绕这两个"复杂度"展开