les éléments de base de lalgorithmique nga nguyen - eisti
TRANSCRIPT
![Page 1: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/1.jpg)
Les éléments de base de l’algorithmique
Nga Nguyen - EISTI
![Page 2: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/2.jpg)
Qu’est-ce que l’algorithmique ?
… c’est une suite d’instructions, qui une fois exécutée correctement, conduit à un résultat donné.
Etape essentielle qui précède la programmation indépendante des particularités de tel ou tel
langage pseudo-code
![Page 3: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/3.jpg)
Plan
• Cours 1 : éléments de base • Cours 2 : procédures et fonctions• Cours 3 : notions complémentaires :
récursivité, complexité, …• Cours 4 : structure de données -
tableau
![Page 4: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/4.jpg)
Cours 1 : Les éléments de base
Variable Expression Affectation Lecture Ecriture Tests Boucles
![Page 5: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/5.jpg)
Les variables
stocker provisoirement des valeurs déclaration des variables
nom type de codage (entier, réel, booléen,
date, caractère, string, …) + taille
![Page 6: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/6.jpg)
Instruction d’affectation une affectation : variable ← expression
quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Variable A, B : EntierDébut
A ← 5B ← 2A ← BB ← A
Fin comment faire pour échanger les valeurs de A
et B ?
![Page 7: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/7.jpg)
Expressions et opérateurs
Une expression est un ensemble de valeurs, reliées par des opérateurs, et équivalent à une seule valeur
Opérateurs numériques : +, -, *, /, ^ alphanumériques : & booléens : et, ou, non, xor
![Page 8: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/8.jpg)
Lecture et écriture Lecture : rentrer des valeurs au
clavier pour qu’elles soient utilisées par le programme
Ecriture : communiquer des valeurs à l’utilisateur en les affichant à l’écran
Ecrire "Entrez votre nom : "
Lire NomFamille
![Page 9: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/9.jpg)
Les tests
Si booléen Alors InstructionsFinSi
Si booléen Alors Instructions 1Sinon Instructions 2FinSi
![Page 10: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/10.jpg)
Les tests
Expression booléenne : Variable Condition (comparaison)
Opérateurs de comparaison : ==, !=, <, >, <=, >=
Opérateurs logique : et, ou, non, xor
![Page 11: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/11.jpg)
Exemple
Variable m, n : EntierDébut
Ecrire "Entrez deux nombres : "Lire m, nSi (m > 0 ET n > 0) OU (m < 0 ET n <
0) Alors Ecrire "Leur produit est positif"
Sinon Ecrire "Leur produit est négatif"
FinSiFin
![Page 12: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/12.jpg)
Tests imbriqués
Variable Temp : EntierDébut
Ecrire "Entrez la température de l’eau :"Lire TempSi Temp <= 0 Alors
Ecrire "C’est de la glace"Sinon
Si Temp < 100 Alors Ecrire "C’est du liquide" Sinon Ecrire "C’est de la vapeur" FinSi
FinSiFin
![Page 13: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/13.jpg)
Les boucles
Tantque booléen … Instructions …
FinTantque
![Page 14: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/14.jpg)
Exemple : contrôle de saisie
Variable Rep : CaractèreDébut
Ecrire "Voulez vous un café ? (O/N)"Lire RepTantque Rep <> "O" et Rep <>
"N" Lire Rep
FinTantqueFin
![Page 15: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/15.jpg)
Une autre structure de boucle
Pour Compteur ← Initial à Final Pas ValeurDuPas…Instructions…
FinPour
![Page 16: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/16.jpg)
Exemple : calculer la somme 1+2+…+N
Variable N, i, Som : EntierDébut
Ecrire "Entrez un nombre : "Lire NSom ← 0Pour i ← 1 à N
Som ← Som + iFinPourEcrire "La somme est : ", Som
Fin
![Page 17: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/17.jpg)
Cours 2 : Procédures et fonctions
Procédure Fonction Variable globale et locale
![Page 18: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/18.jpg)
Procédure une suite d’instructions réalisant une
certaine tâche, à la quelle on donne un nom pour qu’on puisse l’appeler ultérieurement
déclaration :Procédure nom(liste de paramètres)
Variables locales
Instructions
FinProcédure
![Page 19: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/19.jpg)
ExempleProcédure CalculCarrés (debut, fin : ENTIER)
Variable nb : ENTIERnb ← debutTantque nb <= fin
Ecrire nb, nb*nbnb ← nb + 1
FinTantque FinProcédure
![Page 20: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/20.jpg)
Appel d’une procédure nom(liste de paramètres effectifs)
CalculCarres(1,10)…CalculCarres(20,25)
![Page 21: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/21.jpg)
Fonction Pour renvoyer une valeur à la procédure /
fonction appelante
Fonction nom(liste de paramètres) : type de retour
Variables locales
Instructions
Retourner …FinFonction
![Page 22: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/22.jpg)
Exemple
Déclaration : Fonction CalculCarré (nb : ENTIER) :
EntierRetourner nb*nb
FinFonction
Appel : x ← CalculCarré(5)
![Page 23: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/23.jpg)
Fonctions prédéfinies Fonctions de texte :
Len(chaîne) : nombre de caractères d’une chaîne
Mid(chaîne,n1,n2) : extrait de la chaîne, commençant au caractère n1 et faisant n2 caractères de long.
Trouve(chaîne1,chaîne2) : position de chaîne2 dans chaîne1
Ascii(c) Char(n) …
![Page 24: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/24.jpg)
Fonctions prédéfinies Fonctions numériques :
Ent(n) : partie entière d’un nombre Mod(n1,n2) : reste de la division de n1 par
n2 Alea() : nombre aléatoire …
Fonctions de conversion …
![Page 25: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/25.jpg)
2 types de paramètres
Procédure
appelante
Procédure
appelée
Paramètres d’entrée
Paramètres de sortie
Procédure CalculCarre(E nb : Entier, S res : Entier)
![Page 26: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/26.jpg)
2 modes de passage Passage par valeur :
la procédure appelée dispose d'une copie de la valeur; elle peut la modifier, l'information initiale dans l’appelante n'est pas affectée par ces modifications
Passage par référence : la procédure appelée modifie directement la variable en utilisant sa référence (adresse mémoire)
Procédure Bidule(titi : Caractère par valeur, toto : Caractère par
référence)
![Page 27: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/27.jpg)
Relation entre type et mode de passage
d’argument
passage par valeur
passage par référence
paramètre d’entrée
oui oui
paramètre de sortie
non oui
![Page 28: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/28.jpg)
Variable locale et globale Variable locale (privée) :
déclarée au sein d'une procédure ou d'une fonction
N’est visible que par cette procédure / fonction
Variable globale (publique) : une autre possibilité de communiquer
entre les procédures Visible par tout le programme
![Page 29: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/29.jpg)
Une application bien programmée ?
est une application à l'architecture claire, dont les différents modules font ce qu'ils disent, disent ce qu'il font, et peuvent être testés (ou modifiés) un par un sans perturber le reste de la construction.
limiter au minimum l'utilisation des variables globales.
regrouper sous forme de modules distincts tous les morceaux de code qui possèdent une certaine unité fonctionnelle
faire de ces modules des fonctions lorsqu'ils renvoient un résultat unique, et des sous-procédures dans tous les autres cas
![Page 30: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/30.jpg)
Cours 3 : Notions complémentaires
Structures de données Récursif vs itératif Complexité
![Page 31: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/31.jpg)
Structures de données Variable scalaire
Entier, réel, booléen, caractère, string Tableau Structure de donnée linaire
Pile : liste où l'insertion et la suppression ne se font que d'un seul et même côté (LIFO)
File : liste où l'insertion d'un côté, et la suppression de l'autre (FIFO)
Liste : insertions et suppressions se font non seulement aux extrémités, mais aussi à l'intérieur de la liste.
Structure de donnée non linaire Arbre Graphe
![Page 32: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/32.jpg)
Récursivité Définition : une fonction/procédure qui
s'appelle elle-même
Fonction Fact (n : Entier) : EntierSi n = 0 Alors
Retourner 1Sinon
Retourner Fact(n-1) * nFinSi
FinFonction
![Page 33: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/33.jpg)
Version itérative Fonction Fact (n : Entier) : Entier
Variable f, i : Entier f ← 1
Pour i ← 2 à n f ← f*i
FinPourRetourner f
FinFonction
![Page 34: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/34.jpg)
Avantages vs inconvénients
très économique pour le programmeur : simple et intuitive
très dispendieuse de ressources machine : utilisation de pile
tout problème formulé en termes récursifs peut également être formulé en termes itératifs !
![Page 35: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/35.jpg)
Complexité Un ’bon’ algorithme ?
Répond correctement au problème posé Rapide (complexité en temps) Pas trop de mémoire (complexité en espace)
La performance d’un algorithme Taille, structure de donnée d’entrée Nombre d’opérations élémentaires
opérations arithmétiques affectations instructions de contrôle etc.
![Page 36: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/36.jpg)
Pire cas, meilleur cas et moyenne La complexité dans le “pire cas” :
Max C(d) d donnée de taille n
où C(d) est le nombre d’opérations élémentaires pour exécuter l’algorithme sur la donnée d’entrée d
La complexité dans le “meilleur cas” : Min C(d)
d donnée de taille n La complexité en moyenne :
∑ ∏(d)C(d) d donnée de taille n
où ∏(d) est la probabilité d’avoir en entrée une instance d parmi toutes les données de taille n
![Page 37: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/37.jpg)
Notation asymptotique Soient f, g : Nat -> Nat
f(n) = O(g(n)) ssi il existe 2 constantes positives n0 et B t.q n ≥ n0, f(n) ≤ Bg(n)
Un algorithme en O(1) : complexité constante O(n) : complexité linaire O(na) : complexité polynomiale O(en) : complexité exponentielle …
![Page 38: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/38.jpg)
Exemple 1 : le plus petit élément
int plusPetit (int[] x) {int k = 0;int n = length(x);for (int i = 1; i < n; i++) {
if (x[i] < x[k]) k = i;}return k;
} Au pire cas :
nombre d’affectations : 2 + n + (n-1) nombre de comparaisons : n + (n-1) complexité : O(n)
En moyenne ?
![Page 39: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/39.jpg)
Exemple 2 : factorielleFonction Fact (n : Entier) : Entier
Si n = 0 AlorsRetourner 1
Sinon Retourner Fact(n-1) * n
FinSiFinFonction
C(n) : nombre de comparaisons C(n) = 1 + C(n-1)C(0) = 1
=> complexité : O(n)
![Page 40: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/40.jpg)
Exemple 3 : Tours de Hanoi
![Page 41: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/41.jpg)
Tours de Hanoi (suite)Procédure Déplacer (nombre : Entier, de : Entier, à :
Entier, par : Entier) Si nombre > 0 Alors
Déplacer (nombre-1, de, par, à); Bouger-un-disque de, à; Déplacer (nombre-1, par, à, de);
FinSi FinProcédure
C(n) : nombre de déplacements C(n+1) = 2C(n) + 1 => exponentielle
![Page 42: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/42.jpg)
Cours 4 : Tableaux
Structure de données Algorithmes de recherche :
Séquentielle Dichotomique
Algorithmes de tri : Tri par sélection Tri à bulles
![Page 43: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/43.jpg)
Tableaux But : regrouper dans une structure plusieurs valeurs de
même type
Déclaration : A[n] : Tableau de T nom du tableau : A taille de tableau : n type d’élément : T indice : A[i], 1 ≤ i≤ n
Exemple : Mois[12] : Tableau de Caractère Mois = {"janvier", "février", …, "décembre"}Mois[5] = "mai"
![Page 44: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/44.jpg)
Recherche séquentielleFonction RechSeq (A : Tableau de T, n : Entier, val : T) : Booléen
Variable i : Entier, trouve : Booléen i ← 1trouve ← fauxTantque (i ≤n) ET (NOT trouve)
Si A[i] = val Alorstrouve ← vrai
Sinon i ← i+1
FinSiFinTantqueRetouner trouve
FinFonction
![Page 45: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/45.jpg)
Recherche séquentielle : complexité
Pire cas : nombre de comparaisons : n complexité : O(n)
Moyenne : p : probabilité que val soit dans A places équiprobables complexité :
∑pii + (1-p)n = p(n+1)/2 + (1-p)n
![Page 46: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/46.jpg)
Recherche dichotomiqueFonction RechDic (A:Tableau de T, min:Entier, max:Entier, val:T) : Booléen
Variable mid : Entier, Si (min > max) Alors Retourner fauxSinon
mid = (min + max) /2Si (A[mid] == val) Alors Retourner vraiSinon
Si (A[mid] > val) Alors Retourner RechDic(A,mid+1, max, val) Sinon
Retourner RechDic(A,min, mid-1, val) FinSi
FinSiFinSi
FinFonction
![Page 47: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/47.jpg)
Recherche dichotomique : complexité
Tableau A est trié !
RechDic(A,0,n,val)
C(n) : nombre de comparaisonsC(n) = 1 + C(n/2)
C(1) = 1
=> C(n) = O(logn)
![Page 48: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/48.jpg)
Algorithmes de tri Versions lentes : O(n2)
Tri par sélection Tri à bulles Tri par insertion Tri de shell (shell sort) …
Versions rapides :O(nlogn) Tri rapide (quick sort) Tri fusion (merge sort) Tri pas tas (heap sort) …
![Page 49: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/49.jpg)
Tri par sélection Technique : à chaque étape, on met en
bonne position l’élément le plus petit. Exemple :
27 | 63 | 1 | 72 | 64 | 58 | 14 | 9
1 | 63 | 27 | 72 | 64 | 58 | 14 | 9
1 | 9 | 27 | 72 | 64 | 58 | 14 | 63
1 | 9 | 14 | 72 | 64 | 58 | 27 | 63
![Page 50: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/50.jpg)
Tri par sélection : algorithme
Procédure TriSelection(ES A : Tableau de T, n : Entier)Variable i, j : Entier, temp : T Pour i ← 1 à n-1 posmin ← i Pour j ← i + 1 à n Si T[j] < T[posmin] Alors posmin ← j FinSi FinPour Si posmin ≠ i Alors temp ← T[posmin] T[posmin] ← T[i] T[i] ← temp FinSi
FinPourFinProcédure
![Page 51: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/51.jpg)
Tri par sélection : complexité Meilleur cas (le tableau est déjà trié) :
Nombre de comparaisons : (n-1)+(n-2)+…+1 = n(n-1)/2
Nombre d’échanges : 0
Complexité : O(n²)
Pire cas (le tableau est trié en ordre inverse) : Nombre de comparaisons : n(n-1)/2 Nombre d’échanges : n-1
Complexité : O(n²)
Moyenne : O(n²)
![Page 52: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/52.jpg)
Tri à bulles Principe :
tout élément est plus petit que celui qui le suit compare chaque élément avec l’élément qui le suit.
Si l’ordre n’est pas bon, on permute ces deux éléments. Et on recommence jusqu’à ce que l’on n’ait plus aucune permutation à effectuer
Exemple :27 | 63 | 1 | 72 | 64 | 58 | 14 | 927 | 1 | 63 | 64 | 58 | 14 | 9 | 721 | 27 | 63 | 58 | 14 | 9 | 64 | 72
![Page 53: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/53.jpg)
Tri à bulles : algorithme Procédure TriBulle(ES A : Tableau de T, n : Entier)
Variable desordre : Booléen, i : Entier, temp : T desordre ← vraiTantque desordre desordre ← faux Pour i ← 1 à n-1 Si A[i] > A[i+1] Alors temp ← A[i] A[i] ← A[i+1] A[i+1] ← temp desordre ← vrai FinSi FinPourFinTantQue
FinProcédure
![Page 54: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/54.jpg)
Tri à bulles : complexité Meilleur cas (le tableau est déjà trié) :
Nombre de comparaisons : n-1 Nombre d’échanges : 0
Complexité : O(n)
Pire cas (le tableau est trié en ordre inverse) : Nombre de comparaisons : O(n²) Nombre d’échanges : O(n²)
Complexité : O(n²)
Moyenne : O(n²)
![Page 55: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/55.jpg)
Comparaisons des algorithmes de tri (lents)
![Page 56: Les éléments de base de lalgorithmique Nga Nguyen - EISTI](https://reader035.vdocuments.net/reader035/viewer/2022062511/551d9da2497959293b8d1dde/html5/thumbnails/56.jpg)
Comparaisons des algorithmes de tri (rapides)