Aller au contenu

Index des sujets 2023

Corrigé sujet 27 - Année : 2023

Sujet 27 - 2023

Exercice 1

1
2
3
4
5
6
def recherche_min(tab):
    indice_mini,mini = 0, tab[0]
    for indice in range(1,len(tab)):
        if tab[indice]<mini:
            indice_mini,mini = indice,tab[indice]
    return indice_mini

Commentaires

Un parcours par indice est nécessaire puisqu'on a besoin de la position du minimum.

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def separe(tab):
    gauche = 0
    droite = len(tab)-1 #(1)
    while gauche < droite :
        if tab[gauche] == 0 :
            gauche = gauche + 1 #(2)
        else :
            tab[gauche], tab[droite] = tab[droite], tab[gauche] #(3)
            droite = droite - 1
    return tab
  1. gauche et droite sont les indices délimitant la partie non encore triée du tableau, au début c'est donc le tableau entier : gauche=0 le premier indice. Et on rappelle que l'indice du dernier élément d'une liste tab est len(tab)-1.
  2. Si on rencontre un 0, la zone non triée diminue "par la gauche", donc on incrémente i
  3. Dans le cas contraire, la zone non triée diminue "par la droite". On a rencontré un 1, on le positionne donc à l'extrémité droite de la zone non triée en l'échangeant avec la valeur situé à cet endroit.