Cod sursa(job #2617885)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 23 mai 2020 12:02:33
Problema Sortare prin comparare Scor 40
Compilator py Status done
Runda Arhiva educationala Marime 0.87 kb
def quicksort(start, stop):
    i = start
    j = stop
    p1 = choice(v[start:stop + 1])
    p2 = choice(v[start:stop + 1])
    p3 = 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:
        quicksort(i, stop)
    if j > start:
        quicksort(start, j)


from random import choice

fin = open("algsort.in")
fout = open("algsort.out", "w")
n = int(fin.readline())
v = [int(x) for x in fin.readline().split()]
quicksort(0, len(v) - 1)
for i in v:
    fout.write(str(i) + " ")
fin.close()
fout.close()