• Aucun résultat trouvé

TP : Tri à bulles

N/A
N/A
Protected

Academic year: 2022

Partager "TP : Tri à bulles"

Copied!
2
0
0

Texte intégral

(1)

Première NSI Mme Pierrot

Le tri à bulles

Thème :

• Les algorithmes de tri

• Notion de compléxité

Compétences à acquérir  :

• utilisation de boucles imbriquées

• savoir dérouler un algorithme pas à pas

Éléments d’information et exemples.

Sitographie :

Bubble-sort with Gypsy folk dance : https://www.youtube.com/watch?v=lyZQPjUT5B4&t=1s Des animations pour comprendre les algorithmes de tri : http://lwh.free.fr/pages/algo/tri/tri.htm Doc.1 : Exemple

Le tri à bulles est une façon de trier un tableau, cette méthode n’est pas une des plus difficiles, elle n’est pas non plus une des plus rapides.

Au départ on a un tableau non trié (5, 1, 12,-5, 16).

Au début on analyse si le premier élément est supérieur au second (5 et 1) si c’est vrai on permute les deux éléments (swap), le 1 prend la place du 5. On continue.

On regarde si le deuxième élément est supérieur au troisième (ici 5 et 12). Comme 5 n’est pas supérieur à 12 on ne fait rien. On continue à regarder si on doit permuter les deux éléments contigus jusqu’à la fin du tableau. A la fin de cette première boucle le tableau n’est pas complètement trié.

Il faut recommencer à regarder si le premier élément est supérieur au deuxième puis si le deuxième est supérieur au troisième etc... À chaque fois

on fait des permutations si l’élément N est supérieur à l’élément N+1.

On va voir des bulles remonter d’où le nom du tri.

Quand sait-on que le tableau est trié et que l’on doit arrêter le tri?

Quand on ne fait plus aucune permutation dans le tableau (utiliser un booléen qui indique s’il y a eu des permutations).

Travail à réaliser

I- Programmation

1) Regarder la vidéo proposée sur YouTube qui illustre l’algorithme du tri à bulle.

2) Écrire l’algorithme en vous inspirant de la vidéo et du doc. 1

3) Tester cet algorithme manuellement pour deux exemples de listes : [4, 5, 1, 3] puis une de votre choix.

4) Coder l’algorithme en Python dans une fonction triabulle(liste) 5) Le tester avec une liste aléatoire de 50 entiers.

II- Notion de complexité

1) De la même façon que sur cette page : http://lwh.free.fr/pages/algo/tri/tri_bulle.html lors du tri de tonneaux on compte le nombre de comparaisons et de déplacements effectués, comptabiliser le nombre de comparaisons et de déplacements effectués lors d’un tri des listes de cinq nombres suivantes : [4,1,5,2,3]  ; [1,2,3,4,5]  ; [5,4,3,2,1]

2) Quelle est la meilleur configuration initiale ? La pire ? Pourquoi ?

(2)

Première NSI Mme Pierrot

III- Amélioration

« Le tri "Shaker", également appelé tri "Cocktail", tri "Shuttle", tri "boustrophédon" ou tri à bulles bidirectionnel est une variante du tri à bulles.

Son principe est identique à celui du tri à bulles, sauf qu'il change de direction à chaque passe. C'est une légère amélioration car il permet non seulement aux plus grands éléments de migrer vers la fin de la série mais également aux plus petits éléments de migrer vers le début. »

a) Modifier votre fonction « triabulle » pour faire une nouvelle fonction « shaker » qui améliore le tri à bulle en le rendant bidirectionnel.

IV- Comparaison des temps d’exécution des différents algorithmes de tri.

Utiliser les fonctions tic() et toc() pour comparer le temps de tri d’un tableau contenant un grand nombre de valeurs aléatoires (10000 ?) comprises entre -100 et +100 pour les trois algorithmes mis en œuvre :

• Tri par sélection

• Tri à bulle

• Tri shaker Pour rappel :

import time as t

# Définition de vos fonctions de tri…

def tic() :

return t.time() def toc(tinit) :

return t.time() - tinit

# Création d’une grande liste t1 = tic()

l1 = triparselection(liste) duree1 = toc(t1)

t2 = tic()

l2 = triabulle(liste) duree2 = toc(t2) .

. .

Références

Documents relatifs

Vous trouverez dans le fichier lance_tests.py les commandes permettant de générer les douze combinaisons possibles (quatre méthodes pour générer un tableau, trois fonctions de

mais tout n’est pas encore trié...... On est sûr de ne plus devoir

mais tout n’est pas encore trié...... On est sûr de ne plus devoir

[r]

Il utilise tout simplement une formule qui lui donne automatiquement les deux premiers chiffres en fonction des chiffres p, q et r annoncés

C'est très simple et surtout, c'est logique : si un premier nombre x est plus grand qu'un deuxième nombre y et que l'on souhaite trier l'ensemble par ordre croissant, alors x et

1) De la même façon que sur cette page : http://lwh.free.fr/pages/algo/tri/tri_selection.html lors du tri par sélection de tonneaux on compte le nombre de comparaisons et

En s’inspirant de la fonction MinTab(N,Tab) écrite dans le TD précédent, écrire maintenant la fonction RangMinTab(N,P,Tab) qui retourne cette fois le rang (et non la valeur) de la