nsi:tps:exercice2:sujet_2021_2
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
2021 - Sujet 2 - Exercice 2
On considère un tableau d'entiers tab de type list dont les éléments sont des 0 ou des
1. On se propose de trier ce tableau selon l'algorithme suivant :
à chaque étape du tri, le tableau est constitué de trois zones consécutives, la première ne contenant que des 0, la seconde n'étant pas triée et la dernière ne contenant que des 1.
| Zone de 0 | Zone non triée | Zone de 1 |
Tant que la zone non triée n'est pas réduite à un seul élément, on regarde son premier élément :
- si cet élément vaut
0, on considère qu'il appartient désormais à la zone ne contenant que des0; - si cet élément vaut
1, il est échangé avec le dernier élément de la zone non triée et on considère alors qu'il appartient à la zone ne contenant que des1.
Dans tous les cas, la longueur de la zone non triée diminue de 1.
Recopier sous Python en la complétant la fonction tri suivante :
def tri(tab):
# i est le premier indice de la zone non triee, j le dernier indice.
# Au debut, la zone non triee est le tableau entier.
# Tri en place
i = ...
j = ...
while i != j:
if tab[i]== 0:
i= ...
else :
valeur = tab[j]
tab[j] = ...
...
j= ...
Exemple :
>>> t = [0,1,0,1,0,1,0,1,0] >>> tri(t) >>> t [0, 0, 0, 0, 1, 1, 1, 1]
nsi/tps/exercice2/sujet_2021_2.txt · Dernière modification : de goupillwiki
