Aller au contenu

Tri par Tas (Heap Sort)

Structure de tas et tri en place en O(n log n)

Exercice Avancé · Algorithmique · prepa scientifique et economique (CPGE)

Enonce

Implémenter le tri par tas. La fonction modifie T en place et le retourne.

⚠ Contrainte : complexité $O(n\log n)$ en pire cas, $O(1)$ espace auxiliaire (tri en place).

Signature attendue

def tri_par_tas(T: list) -> list:

Exemples

  • tri_par_tas([4, 10, 3, 5, 1]) → [1, 3, 4, 5, 10]
  • tri_par_tas([7, 7, 7]) → [7, 7, 7]
  • tri_par_tas([]) → []

📖 Rappel de cours

Un tas binaire max est un arbre binaire quasi-complet où chaque nœud est $\geq$ à ses enfants. On le stocke dans un tableau, sans pointeurs :

Représentation tableau :

Pour un nœud d'indice $i$ :

  • parent = $\lfloor (i-1)/2 \rfloor$
  • fils gauche = $2i + 1$
  • fils droit = $2i + 2$

Algorithme heap sort :

  1. Construire le tas max (en place) : O(n)
  2. $n$ fois : échanger la racine (max) avec le dernier, réduire la taille, sift_down(0)

Complexité $O(n\log n)$ pire cas, tri en place ($O(1)$ espace auxiliaire) — contrairement au tri fusion.

← Exercices d'algorithmique en Python — tris, dichotomie, récursivité

Exercices du meme theme

  • Détection de Cycle (Floyd)
  • Arbres Binaires — Parcours et Hauteur
  • Arbre Binaire de Recherche (ABR)
  • Algorithme de Kadane
  • Chemins dans une Grille
  • Distance d'Édition (Levenshtein)

La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Essai gratuit
Testez toutes les fonctionnalités sans engagement
En continuant, vous acceptez notre politique de confidentialité.
Déjà abonné ? Se reconnecter
Recevez un lien de connexion par email
Parcourir gratuitement →
Aperçu limité · sans inscription · sans vérification IA
€4,99
/ mois · accès illimité · résiliable
Paiement sécurisé
En vous abonnant, vous acceptez nos conditions et politique de confidentialité.
Résiliation possible depuis votre espace PayPal.

Chargement...

Initialisation de l'environnement

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Progression
0 / 0
Solo
— / —
Python... SQL...
Recherche
🔬 Bac a sable Python ↗ 🧪 Bac a sable SQL ↗ 📝 Concours blanc ↗ 🏖️ Code à la plage ↗ 📚 Listes de rentrée ↗ 🛠️ Admin ↗
Tu aimes PrepaPython ?
Fais-le savoir !
← Retour à l'accueil Mentions legales & confidentialite