Jetzt wollte ich Quicksort nehmen, weil ich finde er sei einiger Maßen einfach zu programmieren.
Mein Problem ist nun ich habe eine Liste zufällig während der Laufzeit erzeugt. Dies tat ich mit bis zu 1.000.000 zufälligen Elementen.
Als ich jedoch nun die Test Daten meines Prof nehmen wollte mit nur 339446 Einträgen kam es auf einmal zu einem rekursions Error da die rekursions tiefe erreicht wurde.
Mein meine Zufallsfunktion zur Erzeugung der Liste.
Code: Alles auswählen
def test_liste_erzeugen(leange_list):
sequenz = []
for rand in range(leange_list):
rand = random.randint(1, 100000)
sequenz.append(rand)
return sequenz
Und der Quicksort Algo:
Code: Alles auswählen
def quicksort(L, anfang=0, ende=None):
if ende == None:
ende = len(L) - 1
if len(L) > 1:
pivot = L[anfang]
links = anfang
rechts = ende
while links <= rechts:
while L[links] < pivot:
links = links+1
while L[rechts] > pivot:
rechts = rechts-1
if links <= rechts:
if links < rechts:
h = L[links]
L[links] = L[rechts]
L[rechts] = h
links = links+1
rechts = rechts-1
if rechts < anfang:
rechts = anfang
if anfang < rechts:
L = quicksort(L, anfang, rechts)
if links < ende:
L = quicksort(L, links, ende)
return L
Als ich die Daten nicht während der Laufzeit in die Liste schrieb habe ich sie mit copy and paste in L=[1,2,4.....] (Liste mit den wie gesagt 339446 Elementen) eingefügt, falls das hilft!?
Also wie kann es zu so etwa kommen bei weniger Elementen?
Danke schon mal für eure Antworten