Menu


1NSI

Les exercices python à connaître

premiers pas en Python
E1 boucles
E2 boucles
E3 boucles
E4 variables
E5 structure conditionnelle
E6 boucles
Un peu de binaire
E1 Nombre de bits
E2 Décalage binaire
E3 string
fonctions, str et listes
E1 Un compteur
E2 liste de nombres aléatoires
E3 moyenne d'une liste
E4 maximum d'une liste
E5 indices ou valeurs ?
Algorithmique partie 2
E1 Recherche séquentielle
E2 Recherche dichotomique
E3 Recherche dichotomique
E4 Nombre de 1
Les algorithmes de tri
E1 Est trié ?
E2 Tableau de 0 et de 1
E3 Inversion dans un tableau
tuples et dictionnaires
E1 Tuple
E2 Police, police
E3 Durées
E4 Anniversaires
E5 Message secret
E6 dictionnaire des occurences
E7 casser un digicode
Algorithmes gloutons
E1 Rendu de monnaie
E2 Livraisons à Manhattan

Tableau de 0 et de 1

POn considère un tableau d'entiers dont la valeur peut être soit 0 soit 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.
Ci-dessous un schéma de la situation pendant le processus de séparation des 0 et des 1 :
debut de zone            fin de zone
    non triée            non triée
           │              │
           ▼              ▼
┌─────────┬────────────────┬─────────┐
│ 0 ... 0 │ zone non triée │ 1 ... 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 des 0 ;
  • 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 des 1.
Dans tous les cas, la longueur de la zone non triée diminue de 1.
La fonction separe prend en paramètre un tableau zeros_et_uns dont les éléments sont des 0 et 1 et renvoie le tableau trié en procédant comme décrit ci-dessus.
On interdit d'utiliser les fonctions de tri natives sort et sorted.
Compléter la fonction separe.

source : https://codex.forge.apps.education.fr