Modification de l'algorithme de selection pour qu'il marche

D'un coté celui-ci est plus éloigné de celui du cours, d'un autre il
en est plus proche.
This commit is contained in:
Geoffrey Frogeye 2015-03-11 21:28:08 +01:00
parent 5a63207ef6
commit d6f079a4fc

View file

@ -17,7 +17,7 @@ http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp4_tri.html
__author__ = 'PREUD\'HOMME Geoffrey & BEAUSSART Jean-loup' __author__ = 'PREUD\'HOMME Geoffrey & BEAUSSART Jean-loup'
__date_creation__ = 'Tue, 10 Mar 2015 10:26:41 +0100' __date_creation__ = 'Tue, 10 Mar 2015 10:26:41 +0100'
from random import randint, shuffle from random import randint
def partie(nom): def partie(nom):
@ -60,13 +60,13 @@ def select_min(l, a, b):
list, int, int int list, int, int int
Renvoie l'indicde d'un élément minimal de la tranche l[a:b] 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 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 que 0 a < b < n
""" """
assert 0 <= a < b <= len(l) assert 0 <= a < b <= len(l)
imin = a imin = a
for i in range(a + 1, b): for i in range(a + 1, b + 1):
if comp(l[i], imin) == -1: if comp(l[i], l[imin]) == -1:
imin = i imin = i
return imin return imin
@ -78,7 +78,7 @@ def tri_selection(l):
CU : l est une liste de longueur n, homogène, déléments ordonnables CU : l est une liste de longueur n, homogène, déléments ordonnables
""" """
n = len(l) n = len(l)
for i in range(n - 2): for i in range(n - 1):
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]