diff --git a/README.md b/README.md new file mode 100644 index 0000000..a5d3efe --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +Auteur : Aurélien Amary + +# TP4 Complexité Algorithmique +## Calcul de complexité des fonctions +### Fonction n°1 +- O(n*m) +- Double boucles for() imbriquées pour le parcours comparatif de 2 tableaux. + +### Fonction n°2 +- O(n) +- La boucle while() sera exécuté x fois. + +### Fonction n°3 +- O(1) +- Pas de boucles, les if() sont exécutés à la suite. + +## Algorithme de Tri +### Fonction Tri Sélection +- O(n²/2) +- Double boucle, mais la seconde parcourt en moyenne que la moitié du tableau comme la taille parcouru diminue de 1 à chaque passage. + +### Fonction Tri +- ? diff --git a/Tri.py b/Tri.py new file mode 100644 index 0000000..20480bd --- /dev/null +++ b/Tri.py @@ -0,0 +1,55 @@ + +# Définition de Fonctions + +def Tri(Tableau, DIMENSIONS, NVALEURS): + liste = Tableau + for d in range(0, DIMENSIONS-2): + liste = liste[0] + print(liste) + + # Tri des tableaux feuilles + for f in range(0, NVALEURS): + TriSelection(liste[f]) + + # Suite - Seulement à deux dimensions + tabsomme = [0]*NVALEURS + for n in range(0, NVALEURS): + tabsomme[n] = sum(liste[n]) + + change = True + while change: + change = False + for i in range(0, NVALEURS-1): + if tabsomme[i] > tabsomme[i+1]: + tmp = tabsomme[i] + tabsomme[i] = tabsomme[i+1] + tabsomme[i+1] = tmp + + tmp = Tableau[i] + Tableau[i] = Tableau[i+1] + Tableau[i+1] = tmp + + +def TriSelection(tableau): + """Implémentation classique d'un tri par sélections.""" + taille = len(tableau) + for i in range(0, taille-1): + idmin = i + for j in range(i+1, taille): # Parcours de la partie non-trié + if tableau[j] < tableau[idmin]: + idmin = j + if idmin != i : + tmp = tableau[i] + tableau[i] = tableau[idmin] + tableau[idmin] = tmp + + +# Programme Principal + +DIMENSIONS = 2 +NVALEURS = 3 +Tableau = [ [0,3,2], [9,4,5], [4,1,3] ] + +Tri(Tableau, DIMENSIONS, NVALEURS) + +print(Tableau)