tri par insertion, correction tri_et_compte

Note: il y a un truc qui merde dans la fonction de mr Bontoux (ie
tri_selection)
This commit is contained in:
Jean-Loup Beaussart (jamesmagnus) 2015-03-11 17:08:09 +01:00
parent 9ca2bb8610
commit 9d00ab1384

View file

@ -82,6 +82,24 @@ def tri_selection(l):
imin = select_min(l, i, n - 1) imin = select_min(l, i, n - 1)
l[i], l[imin] = l[imin], l[i] 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") partie("Travail à réaliser")
section("Préliminaires") section("Préliminaires")
@ -133,23 +151,28 @@ question(1)
compteur = 0 compteur = 0
tri_selection(liste_alea(100, -5000, 5000))
print(compteur, 'comparaisons')
question(2) question(2)
def tri_et_compte(foo, l): 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 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) str, list (list, int)
CU: l est une liste CU: l est une liste
""" """
assert(type(l) == list) assert(type(l) == list)
global compteur global compteur
compteur = 0 compteur = 0
foo(l)
return (foo(l), compteur) return (l, compteur)
partie("Analyse du tri par sélection") partie("Analyse du tri par sélection")