On complétera au fur et à mesure un fichier Thonny. (insertVSselect.py)
En cas de probleme pour l'obtention des graphique, avec Thonny, vous pouvez utiliser Trinket ( LIEN )
Voici l'algorithme du tri par sélection :
def permuter(L,i,j):
"""
permute les elements d'indice i et j de L
exemple :
>>>permuter([12,7,8,45],1,2)
[12,8,7,45]
"""
tmp=L[i]
L[i]= L[j]
L[j]=tmp
return L
def tri_select(L):
n = len(L)
# la tranche l[0:1] est triée
for i in range(n - 1):
for j in range(i+1,n):
if L[j] < L[i] :
permuter(L, i, j)
return L
Tester le tri par selection avec les listes :
L1=[12,48,5,1,0,9,87]
L2=[k for k in range(15,0,-1)]
L3=[k for k in range(0,15)]
print("L1=", L1)
print("L2=",L2)
print("L3=",L3)
Ecrire l'affichage obtenu avec Trinket ou Thonny :
Ajouter le code ci-desous au début de votre fichier Thonny
import random #gestion de l'aleatoire import time # gestion du temps import matplotlib.pyplot as plt # gestion des graphiques
A l'aide de Thonny, indiquer le rôle de chacune des lignes ci-dessous :
time1=time.time()
print('Bonjour')
L=[k for k in range(5000)]
random.shuffle(L)
tri_select(L)
time2=time.time()
print(time2-time1)
Ecrire vos réponses :
time1=time.time() #.....
print('Bonjour') #.....
L=[k for k in range(5000)] #.....
random.shuffle(L) #.....
select_sort(L) #.....
time2=time.time() #.....
print(time2-time1) #.....
def temps_tri_selectionV1():
TEMPS=[] #liste vide
for i in range(2,300):
L=[k for k in range(0,i)]
random.shuffle(L)
time1=time.time()
tri_select(L)
time2=time.time()
T=time2-time1
TEMPS.append(T)
return TEMPS
Les 3 lignes ci-dessous permettent de visualiser les temps sous la forme d'un graphique :
plt.plot(temps_tri_selectionV1(), label="aleatoire") plt.legend() plt.show()
plt.plot(temps_tri_selectionV1(), label="tri select aléa") plt.plot(temps_tri_selectionV2(), label="tri select décroissant") plt.plot(temps_tri_selectionV3(), label="tri select croissant") plt.legend() plt.show()
Le code ci-dessous, vous permet de trier par INSERTION les 3 types de liste (aléatoire, croissante, décroissante)
def tri_insert(L):
n=len(L)
for i in range (1,n):
k=i
while k>0 and L[k] < L[k-1] :
permuter(L,k,k-1)
k=k-1
return L
En vous aidant du travail précédent, générer un graphique qui compare le temps mis (par insertion et par selection ) pour trier une liste aléatoire.
On ecrira la fonction : temps_tri_insertV1()
En vous aidant du travail précédent, générer un graphique qui compare le temps mis (par insertion et par selection ) pour trier une liste rangés dans l'odre décroissant.
On ecrira la fonction : temps_tri_insertV2()
En vous aidant du travail précédent, générer un graphique qui compare le temps mis (par insertion et par selection ) pour trier une liste déja triée.
On ecrira la fonction : temps_tri_insertV3()
Faire une analyse des trois graphiques obtenus.
.