from random import randint
def melange(t):
for i in range(1, len(t)):
j = randint(0, i)
t[i], t[j] = t[j], t[i]
def partition(t, g, d):
assert 0 <= g and g < d-1 and d <= len(t)
pivot = t[g]
m = g
for i in range(g+1, d):
if t[i] < pivot:
m += 1
t[i], t[m] = t[m], t[i]
t[g], t[m] = t[m], t[g]
return m
def quickrec(t, g, d):
"""trie t[d..d[ avec le tri rapide"""
if d <= g+1: return
m = partition(t, g, d)
quickrec(t, g , m)
quickrec(t, m+1, d)
def quicksort(t):
melange(t)
quickrec(t, 0, len(t))
### tests ############################################################
def est_trie(t):
"""teste si le tableau t est triƩ"""
for i in range(0, len(t) - 1):
if t[i] > t[i+1]:
return False
return True
n = 1
while n < 100_000:
t = [randint(-n, n) for _ in range(n)]
quicksort(t)
assert est_trie(t)
n *= 2