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)