Pagini recente » Monitorul de evaluare | Diferente pentru problema/nave_interdimensionale intre reviziile 22 si 21 | Cod sursa (job #554911) | Cod sursa (job #1959184) | Cod sursa (job #2617882)
def quicksort(v):
def quick(start, stop):
i = start
j = stop
p1 = random.choice(v[start:stop + 1])
p2 = random.choice(v[start:stop + 1])
p3 = random.choice(v[start:stop + 1])
if p1 <= p2 <= p3 or p1 >= p2 >= p3:
pivot = p2
elif p2 <= p1 <= p3 or p2 >= p1 >= p3:
pivot = p1
else:
pivot = p3
while i <= j:
while v[i] < pivot:
i += 1
while v[j] > pivot:
j -= 1
if i <= j:
aux = v[i]
v[i] = v[j]
v[j] = aux
i += 1
j -= 1
if i < stop:
quick(i, stop)
if j > start:
quick(start, j)
quick(0, len(v) - 1)
return v
import random
fin = open("algsort.in")
fout = open("algsort.out", "w")
n = int(fin.readline())
v = [int(x) for x in fin.readline().split()]
v = quicksort(v)
for i in v:
fout.write(str(i) + " ")
fin.close()
fout.close()