# Correction de la fonction telle que demandée
def tri(tab:list) -> list:
    #i est le premier indice de la zone non triee, j le dernier indice. 
    #Au debut, la zone non triee est le tableau entier.
    i = 0  # Rien n'est trié au départ
    j = len(tab) - 1  # Rien n'est trié au départ
    while i != j:
        if tab[i]== 0:
            i= i + 1
        else :
            valeur = tab[j]  # intervertir tab[i] et tab[j] demande de passer par une variable intermédiaire
            tab[j] = tab[i]
            tab[i] = valeur
            j = j - 1
    return tab


# Correction de la fonction telle que demandée

def tri_v2(tab:list) -> None:
    '''Trie le tableau de 0 et 1 par effet de bord, les 0 à gauche, les 1 à droite.

    :: param tab(list) :: un tableau contenant uniquement des 0 et des 1
    :: return(None)    :: aucun retour
    :: effet de bord   :: modifie tab par effet de bord
    
    '''
    #i est le premier indice de la zone non triee, j le dernier indice. 
    #Au debut, la zone non triee est le tableau entier.
    i = 0  # Rien n'est trié au départ
    j = len(tab) - 1  # Rien n'est trié au départ
    while i != j:
        if tab[i]== 0:
            i= i + 1
        else :
            valeur = tab[j]  # intervertir tab[i] et tab[j] demande de passer par une variable intermédiaire
            tab[j] = tab[i]
            tab[i] = valeur
            j = j - 1