def tri_a_bulles(T):
N =len(T)for k inrange(N,1,-1):for i inrange(0,k-1):if T[i]> T[i+1]:
T[i],T[i+1]= T[i+1],T[i]
def tri_par_selection(T):
N =len(T)for i inrange(0,N-1):
k = i
for j inrange(i+1,N):if T[j]< T[k]:
k = j
T[i],T[k]= T[k],T[i]
def partition(T,premier,dernier):
pivot = dernier-1
i = premier; j = pivot-1whileTrue:while T[i]< T[pivot]:
i +=1while j >=0and T[pivot]< T[j]:
j -=1if j < i:break
T[i],T[j]= T[j],T[i]
T[i],T[pivot]= T[pivot],T[i]return i
def tri_rapide_rec(T,premier,dernier):# dernier non compris.if premier < dernier-1:# >= 2 éléments
pivot = dernier -1# choix du pivot
T[pivot],T[dernier-1]= T[dernier-1],T[pivot]
pivot = partition(T,premier,dernier)
tri_rapide_rec(T,premier,pivot)
tri_rapide_rec(T,pivot+1,dernier)def tri_rapide(T):
tri_rapide_rec(T,0,len(T))
def creer_tas(T):for i inrange(parent(len(T)-1),-1,-1):
descendre(T,i)def descendre(T,i):
e = plus_grand_enfant(T,i)while e <len(T)and T[i]< T[e]:
T[i],T[e]= T[e],T[i]
i = e
e = plus_grand_enfant(T,i)def plus_grand_enfant(T,i):
pge, e2 = enfants(i)if e2 <len(T)and T[e2]> T[pge]:
pge = e2
return pge
def enfants(i):return2*i+1,2*i+2def parent(i):return(i-1)//2
def tri_par_tas(T):
creer_tas(T)for i inrange(len(T)-1,0,-1):
T[i],T[0]= T[0],T[i]
descendre(T,0,i)def descendre(T,i,n):if n ==None: n =len(T)
e = plus_grand_enfant(T,i,n)while e < n and T[i]< T[e]:
T[i],T[e]= T[e],T[i]
i = e
e = plus_grand_enfant(T,i,n)def plus_grand_enfant(T,i,n):
pge, e2 = enfants(i)if e2 < n and T[e2]> T[pge]:
pge = e2
return pge