# random - véletlenszámokhoz, time - rendszeridőhöz kell
import random, time

N=25000  # N db véletlenszám
Tomb=[]  # Ebben a quicksort dolgozik
Tomb2=[] # Ebben a Python
Tomb3=[] # Ebben a Minimumkiválasztásos

print(N,' db, 1 – ',N + 1,'közötti véletlen egész szám rendezése')

def QuickSort(E, V):
    I = E
    J = V
    X = Tomb[(E + V) // 2]
    while True:
        while X > Tomb[I]:
            I += 1
        while Tomb[J] > X:
            J -= 1
        if I <= J:
            Tomb[I], Tomb[J] = Tomb[J], Tomb[I]
            I += 1
            J -= 1
        if I > J:
            break
    if E < J:
        QuickSort(E, J)
    if I < V:
        QuickSort(I, V)

def minimumos(V):
    for i in range(V - 1):
        minimum = i
        for j in range(i + 1, V):
            if Tomb3[minimum] > Tomb3[j]:
                minimum = j
        Tomb3[minimum], Tomb3[i] = Tomb3[i], Tomb3[minimum]

print('Adatgenerálás...', end='')

fv = open('rendezetlen.txt', 'w')
fv2 = open('rendezetlen_python.txt', 'w')
fv3 = open('rendezetlen_minimum.txt', 'w')

for x in range(N):
    szam = random.randint(1, N + 1)
    fv.write(str(szam) + '\n')
    fv2.write(str(szam) + '\n')
    fv3.write(str(szam) + '\n')
    Tomb.append(szam)
    Tomb2.append(szam)
    Tomb3.append(szam)

fv.close()
fv2.close()
fv3.close()

print('vége')

localtime = time.asctime(time.localtime(time.time()))
ido = localtime.strip().split()
print('QuickSort start: ', ido[3])

QuickSort(0, N - 1)

localtime = time.asctime(time.localtime(time.time()))
ido = localtime.strip().split()
print('QuickSort stop: ', ido[3])

fv = open('rendezett.txt', 'w')

for x in range(N):
    fv.write(str(Tomb[x]) + '\n')

fv.close()

localtime = time.asctime(time.localtime(time.time()))
ido = localtime.strip().split()

print('PythonSort start: ', ido[3])

Tomb2 = sorted(Tomb2)

localtime = time.asctime(time.localtime(time.time()))
ido = localtime.strip().split()
print('PythonSort stop: ', ido[3])

fv = open('rendezett_python.txt', 'w')
for x in range(N):
    fv.write(str(Tomb2[x]) + '\n')
fv.close()

localtime = time.asctime(time.localtime(time.time()))
ido = localtime.strip().split()
print('MinimumSort start: ', ido[3])

minimumos(N)

localtime = time.asctime(time.localtime(time.time()))
ido = localtime.strip().split()
print('MinimumSort stop: ', ido[3])

fv = open('rendezett_minimum.txt', 'w')
for x in range(N):
    fv.write(str(Tomb3[x]) + '\n')
fv.close()
