tri informatique sup spé, Lecture notes of Informatics Engineering

algorithme de tri informatique sup spé cpge

Typology: Lecture notes

2022/2023

Uploaded on 03/25/2023

fox-ie-1
fox-ie-1 🇲🇦

3 documents

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CPGE-AGADIR MP-PSI
MÉTHODES DE TRIS
1 - TRI A BULLES
Principe :
Comparaison 2 à 2 des éléments adjacents et échange s'ils ne sont pas
ordonnés. Le programme s'arrête lorsqu'on parcourt la liste sans faire
d'échange
Comme les bulles, les plus grands éléments remontent en fin de liste.
Programme :
def triBulles (T):
echange = True
n=len(T)
while echange == True :
echange = False
for i in range(0,n-1) :
if(T[i]> T[i+1]):
T[i],T[i+1]=T[i+1],T[i]
echange = True
n=n-1
2 - TRI PAR SELECTION
Principe :
Recherche du plus petit élément du tableau et échange avec le
premier élément
Recherche du plus petit élément du tableau entre les positions 2 et
n -1 et échange avec le second élément
...
Recherche du plus petit élément entre les positions n-2 et n-1 et
échange avec élément en position n-2
Programme :
def triSelection (T):
for i in range(0,len(T)-1):
pmin= i
for j in range (i+1, len(T)):
if T[j] < T [pmin]: pmin= j
T[i],T [pmin] = T[pmin], T[i]
Algorithmes de tri 1 /6 M.GUEROIHI
Complexité : O(N2)
Complexité : O(N2)
pf3
pf4
pf5

Partial preview of the text

Download tri informatique sup spé and more Lecture notes Informatics Engineering in PDF only on Docsity!

CPGE-AGADIR MP-PSI

MÉTHODES DE TRIS

1 - TRI A BULLES

Principe : Comparaison 2 à 2 des éléments adjacents et échange s'ils ne sont pas ordonnés. Le programme s'arrête lorsqu'on parcourt la liste sans faire d'échange Comme les bulles, les plus grands éléments remontent en fin de liste.  Programme : def triBulles (T): echange = True n=len(T) while echange == True : echange = False for i in range(0,n-1) : if(T[i]> T[i+1]): T[i],T[i+1]=T[i+1],T[i] echange = True n=n- 2 - TRI PAR SELECTIONPrincipe :  Recherche du plus petit élément du tableau et échange avec le premier élément  Recherche du plus petit élément du tableau entre les positions 2 et n -1 et échange avec le second élément  ...  Recherche du plus petit élément entre les positions n-2 et n-1 et échange avec élément en position n-  Programme : def triSelection (T): for i in range(0,len(T)-1): pmin= i for j in range (i+1, len(T)): if T[j] < T [pmin]: pmin= j T[i],T [pmin] = T[pmin], T[i]

Complexité : O(N^2 )

Complexité : O(N^2 )

3 - TRI PAR INSERTION

Principe :  La liste étant triée jusqu'à l'élément i-1,  insérer l'élément i à sa place parmi les i premiers éléments  Programme : def tri_Insertion(T) : n=len(T) for i in range(1,n): v = T[i] j = i while j>0 and T[j-1]> v : T[j]= T[j-1] j = j- T[j]= v 4- TRI RAPIDE (QUICK SORT) Le tri rapide (en anglais quick sort) est un algorithme de tri inventé par C.A.R. Hoare en 1961 et fondé sur la méthode de conception diviser pour régner. Son principe consiste à séparer l’ensemble des éléments en deux parties.  Principe : L'algorithme peut s’effectuer récursivement:  une valeur pivot est choisie au hasard. (peut aussi être le premier ou le dernier élément de la liste à trier).  On crée un premier sous-ensemble constitué des éléments plus petits que le pivot. On les place à gauche du pivot.  On crée de la même façon un deuxième sous-ensemble constitué des éléments plus grands que le pivot. On les place à droite de celui-ci.  On procède de même, par récursivité, sur les deux sous-ensembles jusqu’à obtenir des sous ensembles d'un seul élément.

Complexité : O(N^2 )

Calcul de complexité :  Comptons le nombre de comparaisons  La boucle for fait N-1 comparaisons  Le pire des cas correspond au cas dans lequel une des parties est vide et l'autre contient n-1 ), ce qui donne, en notant C(N) la complexité du tri d'un tableau de longueur N , l'équation de récurrence suivante: C(N)= N-1+ C(N-1) Donc C(N)= N^2 / d'où la complexité est O(N^2 )Le meilleur des cas correspond à un segment coupé en deux moitiés égales. L'équation de récurrence devient alors: C(N)= N-1+2.C(N/2) On déduit que C(N)= N.log(N) donc la complexité est O(N.log(N))

5- TRI PAR FUSION

Principe : Le tri par fusion est un algorithme de tri basé sur la technique algorithmique diviser pour régner. L'opération principale de l'algorithme est la fusion, qui consiste à réunir deux listes triées en une seule. Le principe de cet algorithme tend à adopter une formulation récursive :  On découpe les données à trier en deux parties plus ou moins égales  On trie les 2 sous-parties ainsi déterminées  On fusionne les deux sous-parties pour retrouver les données de départ Exemple :Implémentation : L'implémentation de cet algorithme repose essentiellement en 2 fonctions :  fusion : Permet de fusionner deux listes triées de telle sorte que la liste résultante la soit aussi.  triFusion : Une fonction récursive qui assure le découpage de la liste et l'appel de la fonction de fusion. def fusion(L1, L2): res = [ ] i, j= 0, 0 while i< len(L1) and j< len(L2): if L1[i] <= L2[j]: res.append(L1[i]) i += 1 else: res.append(L2[j]) j += 1 return res+L1[i:]+L2[j:] def triFusion(L): if len(L) <= 1: return L m = len(L) // 2 return fusion( triFusion(L[:m]),triFusion(L[m:]))