from insertionsort import insertionsort
from selectionsort import selectionsort
from quicksort import quicksort

import random
import time

def randomList(n):
    '''Generate a List of n random Numbers in [0, 1)'''
    L = []
    for i in range(0, n):
        L.append(random.random())
    return L


def timing(sortfunction, testlist):
    '''Time measurement of a sortfunction'''
    L = testlist[:] # erstelle Kopie der Liste!
    t1 = time.time()
    sortfunction(L)
    t2 = time.time()
    dauer = t2 - t1
    return dauer


txt = 'n;Selectionsort,Insertionsort;Quicksort\n'

rep = 100

for n in range(1000, 2000, 100):

    # Status-Info
    print(f'Sortiere {rep} Listen mit je {n} Elementen ...')

    t1 = 0
    t2 = 0
    t3 = 0
    
    for i in range(0, rep):
        L = randomList(n)

        t1 += timing(selectionsort, L)
        t2 += timing(insertionsort, L)
        t3 += timing(quicksort, L)

    txt += f'{n};{t1:.4f};{t2:.4f};{t3:.4f};\n'

fd = open('sort-benchmark.csv', mode='w')
fd.write(txt)
fd.close()
