Informatik II, SS 2014

Informatik II   ‐ SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 4 (7.5.2014) Asymptotische Analyse, Sortieren IV Fabian Kuhn Algorithmen und Kom...
Author: Kerstin Hofer
4 downloads 0 Views 429KB Size
Informatik II   ‐ SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 4 (7.5.2014)

Asymptotische Analyse, Sortieren IV

Fabian Kuhn Algorithmen und Komplexität Fabian Kuhn

Informatik II, SS 2014

Erfahrungen 1. Übung • C++ / Java sind komplett ungewohnt – Struktur der Dateien / Klassen, was man genau braucht – Nicht zum Laufen bekommen...

• Wöchentliche Fragestunde zusätzlich zum Forum? – Werden wir ganz sicher einmal machen und zwar am  Dienstag, 20. Mai (anstatt Vorlesung) – Im 101‐00‐026 oder im Kinohörsaal (Bekanntgabe über Webseite & Forum)

• Nach 6 Stunden aufgegeben… – ca 9‐10 Stunden pro Übungsblatt sind normal – Aber: Wenden Sie sich bei Problemen frühzeitig ans Forum!

• Gnuplot wurde nicht erklärt – Sollte man selbst rausfinden können / Sie müssen nicht Gnuplot verwenden – Alternativen: excel, andere Office‐Pakete, matlab, R, ... Fabian Kuhn

Informatik II, SS 2014

2

Bemerkungen 1. Übung Hinweise zu Daphne, etc. auf Webseite (seit Freitag) http://ac.informatik.uni‐freiburg.de/teaching/ss_14/info2/InfoUebungen.php

• Einfachste Lösung: Vorlage aus der Vorlesung übernehmen und  anpassen – Makefile / build.xml einfach übernehmen und jedesmal verwenden – build.properties jeweils kurz anpassen – Für Übung 1 dann einfach Quicksort‐Code hinzufügen und Main‐File  anpassen – Wir werden bis Ende Woche eine Musterlösung bereitstellen: Auch wenn Sie die Aufgabe nicht gelöst haben, versuchen Sie die  Vorlesungsbeispiele und die Musterlösung aus dem SVN (public‐Folder)  auszuchecken und bei Ihnen zu kompilieren

Fabian Kuhn

Informatik II, SS 2014

3

Nächste Übungen • Übung 2 (online) ist rein theoretisch... • Übung 3 wird mind. zur Hälfte theoretisch sein... Weitere Programmierübungen: • Wir werden versuchen, jeweils ein Java/C++ Grundgerüst zu  geben, welches Sie dann entsprechend ergänzen können • Wir werden versuchen, in der Übungsaufgabe genauer zu  beschreiben, was Sie tun müssen – wenigstens in den ersten paar praktischen Übungen...

• Es ist normal, dass die Dinge nicht immer auf Anhieb  funktionieren... – Verschwenden Sie allerdings nicht zu viel Zeit, ohne Fortschritt zu machen,  sondern wenden Sie sich frühzeitig mit Ihren Fragen ans Forum – Wenn möglich nicht erst am Montag Abend / Nacht! Fabian Kuhn

Informatik II, SS 2014

4

Messungen Selection Sort 1400

1200

mulliseconds

1000

800 Selection Sort ‐ array sorted backwards SelectionSort ‐ array filled with random integers

600

400

200

Fabian Kuhn

Informatik II, SS 2014

49000

46000

43000

40000

37000

34000

31000

28000

25000

22000

19000

16000

13000

10000

7000

4000

1000

0

5

10000 30000 50000 70000 90000 110000 130000 150000 170000 190000 210000 230000 250000 270000 290000 310000 330000 350000 370000 390000 410000 430000 450000 470000 490000

milliseconds

Messungen Merge Sort MergeSort

70

60

50

Fabian Kuhn 40 MergeSort ‐ backward sorted array

30 MergeSort ‐ random integers

20

10

0

Informatik II, SS 2014 6

Messungen Quick Sort QuickSort 900

800

700

milliseconds

600 Random element is pivot ‐ backward sorted array

500

First element is pivot ‐ backward sorted array 400

Random element is pivot ‐ random integers in array First element is pivot ‐ random integers in array

300

200

100

10000 30000 50000 70000 90000 110000 130000 150000 170000 190000 210000 230000 250000 270000 290000 310000 330000 350000 370000 390000 410000 430000 450000 470000 490000

0

Fabian Kuhn

Informatik II, SS 2014

7

Messungen – Merge Sort vs. Quick Sort QuickSort vs MergeSort Array of random integers 70 60

milliseconds

50 40 Randomized quickSort 30

MergeSort

20 10 0

Fabian Kuhn

Informatik II, SS 2014

8

Analyse Bubble Sort BubbleSort(A): 1: for i=0 to n‐2 do // need to repeat n‐1 times 2:   for j=0 to n‐2‐i do 3:     if (A[j] > A[j+1]) then 4:       swap(A[j], A[j+1])

Fabian Kuhn

Informatik II, SS 2014

9

Analyse Insertion Sort InsertionSort(A): 1: for i = 1 to n‐1 do 2:   // prefix A[1..i] is already sorted 3:   pos = i 4:   while (pos > 0) and (A[pos]