Cod sursa(job #2617882)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 23 mai 2020 12:00:01
Problema Sortare prin comparare Scor 40
Compilator py Status done
Runda Arhiva educationala Marime 1.02 kb
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()