数据结构之算法复杂度(Python)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38360675/article/details/84899352

算法:解决特定问题的步骤的描述 
特性: 
—输入:有零个输入或者多个输 
—输出:只有一个或者多个输出 
—有穷型性:算法在执行有限个步骤时,会自动结束而不会陷入无限循环里面 
—确定性:算法的每一步都有确定的含义而不会出现二义性 
—可行性:算法的每一步都可以通过有限次数完成。

https://blog.csdn.net/cats_miao/article/details/80879692?utm_source=blogxgwz5

使用时间复杂度和空间复杂度来评估一个程序的效能。

(1)空间复杂度S(n)——根据算法写成的程序再执行时占用存储单元的长度。这个长度往往与输入数据的规模n有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。

(2)时间复杂度T(n)——根据算法写成的程序再执行时耗费时间的长度。这个长度往往业余输入数据的规模n有关。时间复杂度过高的低效算法可能导致我们再有生之年都等不到运行结果。

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)
 

展开阅读全文

没有更多推荐了,返回首页