Bases de Python - complexité de l'algorithme

1. La complexité de l'algorithme fait référence : après l'écriture de l'algorithme dans un programme exécutable, les ressources requises pour l'exécution, les ressources incluent les ressources temporelles et les ressources mémoire

2. La complexité de l'algorithme comprend : la complexité temporelle, la complexité spatiale

3. Complexité temporelle : c'est-à-dire l'efficacité d'exécution de l'algorithme, qui fait référence à la relation entre le temps d'exécution de l'algorithme et la valeur d'entrée de l'algorithme. Il est généralement représenté par le grand O. Concentrez-vous principalement sur la boucle for\while. Lors de l'écriture du code, réfléchissez à la manière de réduire les boucles

def test1(n):
    count=0            #a
    for i in range(n):
        count+=i       #b
    return count       #c

# 如上,这个函数,运行时间包括 a,b,c三部分,
# 对于整个函数来说,a,c执行一次,可以忽略不计,b循环部分时间,由输入值n决定,会循环n次,是一个标准的O(n)的复杂度

4. Complexité temporelle commune : O(1)<O(logN)<O(N)<O(NlogN)<O(n à la puissance 2)<O(2 à la puissance n)<O(n! )

5. Cas de complexité temporelle :

5.1 

# 案例O(1):无循环
def o1(n):
    i=n
    k=n*2
    return i+k

5.2

# 案例O(logN):while循环
# i一直在变,那么while条件也一直在变,log2(n):log以2为底,n的对数
def o_log_n(n):
    i=1          #a
    while i<n:
        i=i*2    #b
    return i     #c

5.3

# 案例O(N):for循环
# O(M+N)两个for循环
def OMN(n,m):
    count=0
    for i in range(m):
       count +=i
    for j in range(n):
        count +=j
    return count

5.4

# 案例:O(NlogN):for循环嵌套while循环
def ONLogN(m,n):
    count=0
    j=0
    for i in range(m):
        while j<n:
            count +=i+j
            j=j+2
    return  count

5.5 

# 案例:O(n的平方):for循环嵌套for循环。

def ON2(n):
    count=0
    for i  in range(n):
        for j in range(n):
            count=i+j
    return count

6. Complexité spatiale : la relation entre l'espace de stockage de l'algorithme et la valeur d'entrée

7. Complexité de l'espace commun : O(1)<O(N)

8. Cas de complexité spatiale :

8.1 Définir une variable de comptage de type int, un int est de 4 octets. Dans l'exemple suivant, quel que soit le nombre d'exécutions de la boucle for, le contenu de count est modifié, l'espace occupé par count n'est pas modifié, return count n'est exécuté qu'une seule fois et se termine après l'exécution. La complexité spatiale est O(1)

def test2(n):
    count=0;
    for i in range(n):
        count+=i
    return count

8.2 Définir un tableau, ajouter un octet sans ajouter de valeur, ce qui est une augmentation linéaire. La complexité spatiale est O(N)

def test3(n):
    array=[]
    for i in n:
        array.append(i)
    return array

Je suppose que tu aimes

Origine blog.csdn.net/holly_08/article/details/114307672
conseillé
Classement