diff --git a/bubblesort.py b/bubblesort.py new file mode 100644 index 0000000..761bbc5 --- /dev/null +++ b/bubblesort.py @@ -0,0 +1,46 @@ +import random +import time + + +def bubblesort(array): + anzahlVergleiche = 0 + anzahlTauschvorgaenge = 0 + + n = len(array) + + startzeit = time.perf_counter() + + for i in range(n - 1): + for j in range(n - 1): + anzahlVergleiche += 1 + + if array[j] > array[j + 1]: + array[j], array[j + 1] = array[j + 1], array[j] + anzahlTauschvorgaenge += 1 + + endzeit = time.perf_counter() + + return anzahlVergleiche, anzahlTauschvorgaenge, endzeit - startzeit + + +# 40.000 unterschiedliche Zahlen zwischen 1 und 100.000 +data = random.sample(range(1, 100001), 40000) + +print("=" * 45) +print(" BUBBLESORT") +print("=" * 45) + +vergleiche, tausche, zeit = bubblesort(data) + +print("\nSortierung abgeschlossen!") +print("-" * 45) +print("Anzahl Zahlen: ", len(data)) +print("Anzahl Vergleiche: ", vergleiche) +print("Anzahl Tauschvorgänge:", tausche) +print("Benötigte Zeit: ", zeit, "Sekunden") +print("-" * 45) + +print("\nErste 20 Zahlen des sortierten Arrays:") +print(data[:20]) + +print("=" * 45) diff --git a/quicksort.py b/quicksort.py new file mode 100644 index 0000000..a4fd5ac --- /dev/null +++ b/quicksort.py @@ -0,0 +1,44 @@ +import random +import time + + +def quicksort(array, links, rechts): + if links < rechts: + pivot = array[rechts] + i = links - 1 + + for j in range(links, rechts): + if array[j] <= pivot: + i += 1 + array[i], array[j] = array[j], array[i] + + array[i + 1], array[rechts] = array[rechts], array[i + 1] + + quicksort(array, links, i) + quicksort(array, i + 2, rechts) + + +# 1000 unterschiedliche Zahlen zwischen 1 und 100.000 +data = random.sample(range(1, 100001), 1000) + +print("=" * 40) +print(" QUICKSORT") +print("=" * 40) + +startzeit = time.perf_counter() + +quicksort(data, 0, len(data) - 1) + +endzeit = time.perf_counter() + +print("\nSortierung abgeschlossen!") +print("-" * 40) +print("Anzahl Zahlen: ", len(data)) +print("Benötigte Zeit: ", endzeit - startzeit, "Sekunden") +print("-" * 40) + +print("\nErste 20 Zahlen des sortierten Arrays:") +print(data[:20]) + +print("=" * 40) + diff --git a/selectionsort.py b/selectionsort.py new file mode 100644 index 0000000..c7e4109 --- /dev/null +++ b/selectionsort.py @@ -0,0 +1,51 @@ +import random +import time + + +def selectionsort(array): + anzahlVergleiche = 0 + anzahlTauschvorgaenge = 0 + + n = len(array) + + startzeit = time.perf_counter() + + for i in range(n - 1): + min_index = i + + for j in range(i + 1, n): + anzahlVergleiche += 1 + + if array[j] < array[min_index]: + min_index = j + + if min_index != i: + array[i], array[min_index] = array[min_index], array[i] + anzahlTauschvorgaenge += 1 + + endzeit = time.perf_counter() + + return anzahlVergleiche, anzahlTauschvorgaenge, endzeit - startzeit + + +# 1000 unterschiedliche Zahlen zwischen 1 und 100.000 +data = random.sample(range(1, 100001), 100000) + +print("=" * 45) +print(" SELECTIONSORT") +print("=" * 45) + +vergleiche, tausche, zeit = selectionsort(data) + +print("\nSortierung abgeschlossen!") +print("-" * 45) +print("Anzahl Zahlen: ", len(data)) +print("Anzahl Vergleiche: ", vergleiche) +print("Anzahl Tauschvorgänge:", tausche) +print("Benötigte Zeit: ", zeit, "Sekunden") +print("-" * 45) + +print("\nErste 20 Zahlen des sortierten Arrays:") +print(data[:20]) + +print("=" * 45) diff --git a/turtlerekursion.py b/turtlerekursion.py index a8e6440..3ada2f1 100644 --- a/turtlerekursion.py +++ b/turtlerekursion.py @@ -1,14 +1,14 @@ import turtle -#def zeichnen(n): -# if n > 0: -# turtle.forward(300) -# turtle.left(75) -# turtle.forward(150) -# turtle.backward(150) -# zeichnen(n - 1) +def zeichnen(n): + if n > 0: + turtle.forward(300) + turtle.left(75) + turtle.forward(150) + turtle.backward(150) + zeichnen(n - 1) -#zeichnen(2) +zeichnen(2) #turtle.mainloop() @@ -32,7 +32,6 @@ import turtle #turtle.mainloop() - def baum(laenge): if laenge < 20: return