Aller au contenu

Index des sujets 2023

Corrigé sujet 43 - Année : 2023

Sujet 43 - 2023

Exercice 1

1
2
3
4
5
6
7
8
def ecriture_binaire_entier_positif(n):
    liste_bit=[n%2]
    n=n//2
    while n!=0:
        liste_bit.append(n%2)
        n=n//2
    liste_bit.reverse()
    return liste_bit,len(liste_bit)

Commentaires

L'utilisation de reverse est suggéré dans l'énoncé on pourrait s'en passer en utilisant liste_bit = [n%2] + liste_bit à la ligne 5.

Exercice 2

1
2
3
4
5
6
7
8
9
def tri_bulles(T):
    n = len(T) 
    for i in range(len(T)-1,0,-1): #(1)
        for j in range(i):
            if T[j] > T[j+1]: #(2)
                temp = T[j] #(3)
                T[j] = T[j+1] 
                T[j+1] = temp
    return T
  1. On parcourt la liste à l'envers à l'aide de l'indice i (le dernier élément de T a pour indice len(T)-1)
  2. On teste si deux éléments consécutifs ne sont pas dans le bon ordre
  3. Si oui, alors on les échange

Attention

  • Cet exercice demande de coder le tri à bulles qui n'est pourtant pas au programme. Son principe est de faire remonter les plus petits éléments de la liste vers le début en les échangeant avec leur voisins.
  • Les lignes 6,7 et 8 permettant d'échanger T[j] et T[j+1] en utilisant la variable temporaire temp, on pourrait écrire plus simplement : T[j],T[j+1]=T[j+1],T[j]
  • Le return T peut laisser penser qu'on veut récupérer la liste triée, alors que T est modifiée et triée par la fonction puisque mutable.