Aller au contenu

Algorithmes Terminale

Récursivité

Fusion de deux listes triées

def fusion(A, B):    # (1)!
    i = 0
    j = 0
    fus = []
    while i < len(A) and j < len(B):    # (2)!
        if A[i] <= B[j]:    # (3)!
            fus.append(A[i])
            i += 1
        else:
            fus.append(B[j])
            j += 1
    while i < len(A):       # (4)!
        fus.append(A[i])
        i += 1
    while j < len(B):       # (5)!
        fus.append(B[j])
        j += 1
    return fus
  • Initialiser deux indices et la liste de résultat(6)
  • Tant qu'on a pas fini un des deux tableaux(7)
    • On choisit la valeur la plus petite entre celles de chaque tableau en incrémentant l'indice correspondant(8)
  • Finir de parcourir les valeurs qui restent dans le 1e tableau(9)
  • Finir de parcourir les valeurs qui restent dans le 2e tableau(10)
Visualisation

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Lancer le code de l'IDE ci-dessus...

  1. Initialiser deux indices et la liste de résultat
  2. Tant qu'on a pas fini un des deux tableaux
  3. On choisit la valeur la plus petite entre celles de chaque tableau en incrémentant l'indice correspondant
  4. Finir de parcourir les valeurs qui restent dans le 1e tableau
  5. Finir de parcourir les valeurs qui restent dans le 2e tableau
  6. def fusion(A, B):
        i = 0
        j = 0
        fus = []
    
  7.     while i < len(A) and j < len(B):
    
  8.         if A[i] <= B[j]:
                fus.append(A[i])
                i += 1
            else:
                fus.append(B[j])
                j += 1
    
  9.     while i < len(A):
            fus.append(A[i])
            i += 1
    
  10.     while j < len(B):
            fus.append(B[j])
            j += 1
        return fus