Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parHyacinthe Pascal Modifié depuis plus de 10 années
1
Algorithmique et programmation Informatique Cours 11 26/11/2001
2
Les tris 678910 215 6 12345 79384 Indice, numéro dordre Valeurs à trier 678910 6789 12345 12345 Valeurs triées
3
Les tris
4
Les tris Tri bulle Insertion linéaire Quicksort Tri Shell Fusion
5
Tris: bulle Procedure tri_bulle ( Z: M ) variables i, j: entier; corps i 1; répéter pour j de 1 à N - i faire si Z j > Z j+1 alors Z j+1 Z j fsi fpour i i + 1 jusquei = N - 1 fproc 1_tri_bulle ƒ
6
Tris: insertion linéaire Procedure tri_insertion ( Z: M ) variables i, j: entier;sauve: réel; corps pour i de 2 à N faire sauve Z i ;j i - 1 tant que sauve 1 faire Z j+1 Z j j j - 1 ftant si sauve < Z j alors Z j+1 Z j ; Z j sauve sinon Z j+1 sauve fsi fpour fproc 2_insertion_linéaire ƒ
7
Tris: insertion linéaire Nombre de comparaisons nécessaires : si les nombres à trier sont disposés « au hasard » alors
8
Tris: insertion linéaire Nombre de comparaisons nécessaires: Si j éléments sont déjà triés Pour placer le j+1 ième nombres de comparaisons: j / 2 Pour les placer tous
9
Tris: Quicksort Procedure tri_quick (Z: M ; debut, fin: entier ) variables i, j: entier ; pivot: réel; corps si fin - debut > 0 alors pivot Z debut i debut +1;j fin r épéter tant que Zi < pivot et i < j faire i i + 1 ftant tant que Zj > pivot et i j faire j j - 1 ftant si < j alors Z i Z j ; j j - 1 fsi i i + 1 jusque i > j Z j Z debut tri_quick (debut, j-1) tri_quick (j+1, fin) fsi fproc 3_tri_quicksort ƒ
10
Tris: Quick Nombre de comparaisons nécessaires: Pour le premier vecteur: n comparaisons Pour les deux deuxièmes vecteurs: n/2 et n/2soitn comparaisons Pour les quatres vecteurs: n/4n/4 n/4 n/4soit n comparaisons Nombre de fois que nous pouvons « couper » en deux sous- vecteurs: log 2 n
11
Tris: comparaison Nombre de comparaisons en moyenne N =2kk2kk Séquentielle ~ n 2 /4 Dichotomique ~ n log 2 n 831624 325256160 12874 000900 256816 0002 000 102410260 00010 000 3276815268 000 000490 000
12
Tris: Shell Procedure tri_shell ( Z: M ) variables h, i, j, ii, jj, k: entier ; sauve: réel; corps h 1 tant que h (4 * n - 9) ÷ 3 faire h 3 * h + 1 ftant répéter pour i de 1 à h faire jj i pour j de i + 1 à n ÷ h faire jj jj + h;k jj - h; sauve Z ij tant que (sauve h) faire Z k + h Z k ; k k - hftant si sauve < Z k alorsZ k + h Z k ; Z k sauve sinonZ k + h sauvefsi fpour h (h - 1) div 3 jusquà h < 1 fproc
13
Tris: comparaisons Bloc tri constanten = … typev = vecteur 1 à 200 dentiers variablesR, S, T: v k: entier corps Lire (T) R T;S T; lineaire(R, n); shell(S, n); quick(T, 1, n); pour k de 1 à n faire écrire(k, R k, S k, T k ) fpour fbloc. 4a_trois_tri_tick (80) ƒ 4b_trois_tri_tick(5000) ƒ
14
Tris: entités bloc test constantemax = 500; typefiche enregistrement numero: entier; denom: vecteur 1..30 de caractères fin v = vecteur 1..max de fiche variables liste: v ;j, k: entiers; corps initialisation(liste); pour k de1 à 20 faire écrire (numero de liste k ); écrire(denom de liste k ) fpour trilin(liste, max); pour k de1 à 20 faire écrire (numero de liste k ); écrire(denom de liste) fpour fin bloc 5_test tri entité ƒ
15
Tris: entités procedure trilin (x: v ; n: entier); variablesj, k: entiers;sauve: fiche; corps pour k de 2 à n faire j k - 1;sauve x k ; tant que (sauve.numero 1) faire x j + 1 x j ; j j - 1 ftant; si sauve.numero < x j.numero alors x j + 1 x j ; x j sauve sinon x j + 1 sauve fsi fpour fproc 5_test tri entité ƒ
16
Tris: stabilité Soit le vecteur 5 2 7 7 6 3 9 Deux des composantes sont égales. Notons les 7a et 7b respectivement. Le vecteur s'écrit: 5 2 7a 7b 6 3 9 Tri est stable 2 3 5 6 7a 7b 9 Tri n'est pas stable 2 3 5 6 7b 7a 9
17
Tris: stabilité JulesDurand AnnemarieDupont PierreDupré AnneDupont AnneDupont AnnemarieDupont JulesDurand PierreDupré AnnemarieDupont AnneDupont PierreDupré JulesDurand Tri sur le prénom Tri instable sur le nom
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.