Bonjour,
je cherche à comparer les temps d'exécution de différentes fonctions de tri d'un tableau de données.
J'utilise à cet effet la bibliothèque "time". Mon code est donné ci-dessous.
Lors de mes essais, les temps varient significativement pour un même tri et une même longueur de tableau. J'imagine que c'est à cause des autres taches en fonctionnement simultanément sur mon PC. Y-a-t-il moyen de bloquer l'exécution de ces autres tâches le temps du chronométrage ?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 from random import randrange import time #Fonction tri par sélection sur un tableau T #Renvoie T trié par ordre croissant def triSelection(T): compteur = 0 for i in range(0,len(T)-1): #boucle de parcours du tableau min = i for j in range (i+1, len(T)): #boucle de rangement de élément le plus petit if T[j]<T[min]: min = j compteur = compteur + 1 #print(compteur) if i != min: T[i], T[min] = T[min], T[i] #echange des deux cases de T #print ("compteur triSelection: ",compteur) return T #Fonction tri par insertion sur un tableau T #Renvoie T trié par ordre croissant def triInsertion(T): compteur = 0 for i in range(1,len(T)-1): #boucle de parcours du tableau x = T[i] j = i while j > 0 and T[j-1] > x: T[j] = T[j-1] j = j-1 compteur = compteur +1 T[j] = x #print ("compteur triInsertion: ",compteur) return T #Fonction tri par fusion sur un tableau T #Renvoie T trié par ordre croissant def triFusion(t): if len(t)<2: return t else: m=len(t)//2 return fusion(triFusion(t[:m]),triFusion(t[m:])) #fonction tri appelee par triFusion def fusion(t1,t2): if t1==[]: return t2 elif t2==[]: return t1 elif t1[0]<t2[0]: return [t1[0]]+fusion(t1[1:],t2) else: return [t2[0]]+fusion(t1,t2[1:]) #prog principal T=[] nb= int(input("combien d'élémnts?")) for i in range (nb): T.append(randrange(10000)) print (T) print ("************************ j'ai trié") tempsDebut = time.clock() #depart chrono #print(triSelection(T)) print(triInsertion(T)) #print(triFusion(T)) tempsFin = time.clock() #arret chrono print("Temps total: ", tempsFin - tempsDebut)
Partager