Aller au contenu

Index des sujets 2022

Corrigé sujet 26 - Année : 2022

Sujet 26 - 2022

Exercice 1

1
2
3
4
5
6
7
def RechercheMin(tab):
    if tab==[]: return None
    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

  • Rien n'est indiqué pour la liste vide, on a choisit de renvoyer None dans ce cas
  • 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):
    i = 0
    j = len(tab)-1 #(1)
    while i < j :
        if tab[i] == 0 :
            i = i + 1 #(2)
        else :
            tab[i], tab[j] = tab[j],tab[i] #(3)
            j = j-1
    return tab
  1. i et j sont les indices délimitant la partie non encore triée du tableau, au début c'est donc le tableau entier. 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.