Tri par selection minimum

This commit is contained in:
Geoffrey Frogeye 2015-03-10 11:22:34 +01:00
parent 09b1064621
commit b77fb2d29b

View file

@ -33,50 +33,6 @@ def question(numero):
partie("Prérequis") partie("Prérequis")
partie("Travail à réaliser")
section("Préliminaires")
question(1)
def liste_croissante(n):
"""
int -> list(int), construit la liste des entiers compris entre 0 et n-1, rangés dans l'ordre croissant
CU: n est un entier positif
"""
assert(type(n)==int and n>=0)
return [i for i in range(n)]
question(2)
def liste_decroissante(n):
"""
int -> list(int), construit la liste des entiers compris entre 0 et n-1, rangés dans l'ordre décroissant
CU: n est un entier positif
"""
assert(type(n)==int and n>=0)
return [i for i in range(n-1, 0, -1)]
question(3)
def liste_alea(n, a, b):
"""
int, int, int list
Renvoie une liste dentiers, qui construit une liste de longueur n les entiers choisis au hasard
compris entre a et b.
"""
res = []
for i in range(n):
res.append(randint(a, b))
return res
section("Compter les comparaisons")
compteur = 0
def comp(x, y): def comp(x, y):
""" """
parametres parametres
@ -97,8 +53,81 @@ def comp(x, y):
else: else:
return 1 return 1
def select_min(l, a, b):
"""
list, int, int int
Renvoie l'indicde d'un élément minimal de la tranche l[a:b]
CU : l est une liste de longueur n, d'éléments homogènes ordonnables, et a et b deux indices tels
que 0 a < b n
"""
assert 0 <= a < b <= len(n)
imin = a
for i in range(a + 1, b):
if comp(l[i], imin) == -1
imin = i
return imin
def tri_select_min(l):
"""
list
La liste l est trié (selon l'algorithme du tri par sélection du minimum)
CU : l est une liste de longueur n, homogène, déléments ordonnables
"""
for i in range(len(l) - 2):
imin = select_min(l, i, n - 1)
l[i], l[imin] = l[imin], l[i]
partie("Travail à réaliser")
section("Préliminaires")
question(1) question(1)
def liste_croissante(n):
"""
int list(int)
Retourne la liste des entiers compris entre 0 et n-1, rangés dans l'ordre croissant
CU: n est un entier positif
"""
assert(type(n) == int and n >= 0)
return [i for i in range(n)]
question(2)
def liste_decroissante(n):
"""
int list(int)
Retourne la liste des entiers compris entre 0 et n-1, rangés dans l'ordre décroissant
CU: n est un entier positif
"""
assert(type(n) == int and n >= 0)
return [i for i in range(n - 1, 0, -1)]
question(3)
def liste_alea(n, a, b):
"""
int, int, int list
Renvoie une liste dentiers, qui construit une liste de longueur n les entiers choisis au hasard
compris entre a et b.
"""
res = []
for i in range(n):
res.append(randint(a, b))
return res
section("Compter les comparaisons")
question(1)
compteur = 0
question(2) question(2)
partie("Analyse du tri par sélection") partie("Analyse du tri par sélection")