时间复杂度&空间复杂度
前言:空间复杂度与时间复杂度是数据结构的复杂度,在现在储存设备越来越便宜的时代,时间复杂度是决定程序运行速度的重要因素。
算法时间复杂度是衡量计算性能的指标,反映了程序执行时间随着输入规模的增长而增长的量级,很大程度的反映出算法性能的好坏,这个量级用大写的O加()表示
时间复杂度
print("Hello world")
for i in (n):
print("Hello world)
for i in (n):
for j in (n):
for k in (n):
print("Hello world")
时间复杂度的概念:方便开发者估算运行一段代码所需要的时间。
大O的含义:大O用来表示上界的,当用它作为算法的最坏情况运行时间的上界,就是对任意数据输入的运行时间的上界。
第一个代码时间复杂度为O(1),1大约可以理解为一个时间单位,可以理解为运行一次
第二个代码时间复杂度为O(n),n代表着循环n次,单位可以理解为n,输入数据增大几倍,时间复杂度对应增大几倍。
第三个代码时间复杂度为O(n^3),循环里面套循环,可以理解为循环与循环相乘,但要注意输入数据的大小,输入数据增大几倍,时间复杂度对应增大n的立方倍
补充:打印一次和3次甚至十几次,时间差别不大,就可以理解为单位时间1。可以理解为量变未引起质变。第二个同理可以理解为只要大概时间,而忽略“细枝末节”,就好比可以把一个小时几分钟大约看成一个小时。
空间复杂度
空间复杂度的概念:是对一个算法在运行过程中临时占用存储空间大小的量度。
时间复杂度和空间复杂度表示方法完全一样。
一个长度为n的列表,n不同占用内存也不同。
ps:为了打蓝桥杯,而学的代码和算法(希望能获奖),每天坚持刷题和更新结构与算法,code新手,如有不足请各位大佬多多指正(手动狗头)
共勉一句话:
你主要的问题在于读书太少而想得太多。——杨绛