Exercice

Voici deux algorithmes qui cherchent l'indice du maximum d'une liste :

1
Algo IndMax1:
2
3
Entrée:
4
    l, liste d'entiers
5
6
max prend la valeur l[1]
7
ind_max prend la valeur 1
8
Pour i de 2 à longueur(l) alors:
9
    Si max < l[i] alors:
10
        max prend la valeur l[i]
11
        ind_max prend la valeur i
12
    FinSi
13
FinPour
14
15
Retourner ind_max
1
Algo IndMax2:
2
3
Entrée:
4
    l, liste d'entiers
5
6
max prend la valeur l[1]
7
Pour i de 2 à longueur(l) alors:
8
    Si max < l[i] alors:
9
        max prend la valeur l[i]
10
    FinSi
11
FinPour
12
13
Pour i de 1 à longueur(l) alors:
14
    Si l[i] == max alors:
15
        Retourner i
16
    FinSi
17
FinPour

Question

Quel algorithme a la plus petite complexité en temps ?

Solution

IndMax1 car il ne possède qu'une boucle.

Question

Quel algorithme à la plus petite complexité en espace ?

Solution

IndMax2 car il ne possède une variable de moins

Question

Combiner ces deux algorithmes pour trouver un algorithme avec une seule boucle et une seule variable.

Solution

1
Algo IndMax3:
2
3
Entrée:
4
    l, liste d'entiers
5
6
ind_max prend la valeur 1
7
Pour i de 2 à longueur(l) alors:
8
    Si l[ind_max] < l[i] alors:
9
        ind_max prend la valeur i
10
    FinSi
11
FinPour
12
13
Retourner ind_max