Tri par selection minimum
This commit is contained in:
parent
09b1064621
commit
b77fb2d29b
|
@ -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 d’entiers, 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 d’entiers, 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")
|
||||||
|
|
Reference in a new issue