diff --git a/S2/TP4/analyse_tris.py b/S2/TP4/analyse_tris.py index f259442..b6db15c 100644 --- a/S2/TP4/analyse_tris.py +++ b/S2/TP4/analyse_tris.py @@ -82,6 +82,24 @@ def tri_selection(l): imin = select_min(l, i, n - 1) l[i], l[imin] = l[imin], l[i] +def tri_insertion(l, n): + """ + list, int → ∅ + n est un indice de l tel que l[0:n] soit une liste triée. La fonction déplace l'élément de rang n de telle sorte que l[0:i+1] soit triée + CU: n est un entier < len(l) et l est une liste, dont les éléments sont comparables, triée jusqu'à l'indice n-1. + """ + + assert(type(n)==int and type(l)==list and n < len(l)) + + aux = l[n] + + k=n + while k >= 1 and l[k-1] > aux: + l[k] = l[k-1] + k -= 1 + + l[k] = aux + partie("Travail à réaliser") section("Préliminaires") @@ -133,23 +151,28 @@ question(1) compteur = 0 +tri_selection(liste_alea(100, -5000, 5000)) + +print(compteur, 'comparaisons') + question(2) def tri_et_compte(foo, l): - """ - Trie la liste l avec la fonction de triage foo passée en paramètre, renvoie la liste triée et le nombre de comparaisons effectuées - str, list → (list, int) - CU: l est une liste - """ + """ + Trie la liste l avec la fonction de triage foo passée en paramètre, renvoie la liste triée et le nombre de comparaisons effectuées + str, list → (list, int) + CU: l est une liste + """ assert(type(l) == list) global compteur compteur = 0 + foo(l) - return (foo(l), compteur) + return (l, compteur) partie("Analyse du tri par sélection")