Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einführung in die Informatik: Programmierung und Software-Entwicklung

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung in die Informatik: Programmierung und Software-Entwicklung"—  Präsentation transkript:

1 Einführung in die Informatik: Programmierung und Software-Entwicklung
Zentralübung 6: Lösung Aufgabe 5-4, Tipps zu Blatt 6, Einfache Klassen Christian Kroiß

2 Aufgabe 5-4 Zunächst: Entschuldigung! Die Aufgabe doch etwas sehr schwer. Aber: bei der Korrektur wird auf die Grundideen Wert gelegt statt auf die genaue Rechnung. Wir werden versuchen, das nächste Bonus-Blatt einfacher zu machen!

3 Aufgabe 5-4 a/c) static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true;

4 Simulation a ungleich b, ungleiche Länge
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true Ergebnis: FALSE a = 1 2 3 b = 1 2 3 4

5 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; a = 1 2 3 b = 4 2 3 VERGLEICHE = 0

6 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 a = 1 2 3 b = 4 2 3 VERGLEICHE = 1

7 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 j = 0 a = 1 2 3 b = 4 2 3 VERGLEICHE = 2

8 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true true i = 0 j = 0 a = 1 2 3 b = 4 2 3 VERGLEICHE = 2

9 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 j = 0 a = 1 2 3 b = 4 2 3 VERGLEICHE = 4

10 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true true i = 0 j = 1 a = 1 2 3 b = 4 2 3 VERGLEICHE = 4

11 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 j = 1 a = 1 2 3 b = 4 2 3 VERGLEICHE = 6

12 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true true i = 0 j = 2 a = 1 2 3 b = 4 2 3 VERGLEICHE = 6

13 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 j = 2 a = 1 2 3 b = 4 2 3 VERGLEICHE = 8

14 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; false i = 0 j = 3 a = 1 2 3 b = 4 2 3 VERGLEICHE = 8

15 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true i = 0 j = 3 a = 1 2 3 b = 4 2 3 VERGLEICHE = 9

16 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 j = 3 a = 1 2 3 b = 4 2 3 VERGLEICHE = 10

17 Simulation a ungleich b, a[0] nicht in b
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; Ergebnis: FALSE Vergleiche: n = 4 + 2n = 10 i = 0 j = 3 a = 1 2 3 b = 4 2 3

18 Simulation a gleich b 1 VERGLEICHE = 0
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; a = 1 2 3 b = 1 2 3 VERGLEICHE = 0

19 Simulation a gleich b VERGLEICHE = 1
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 1

20 Simulation a gleich b VERGLEICHE = 2
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 2

21 0 Durchläufe der WHILE-Schleife für i == 0 Aber: 2 Vergleiche
Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true 0 Durchläufe der WHILE-Schleife für i == 0 Aber: 2 Vergleiche false i = 0 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 2

22 Simulation a gleich b false VERGLEICHE = 4
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 0 j = 0 a = 1 2 3 b = 1 2 3 false VERGLEICHE = 4

23 Simulation a gleich b true VERGLEICHE = 5
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true i = 1 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 5

24 Simulation a gleich b VERGLEICHE = 6
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 1 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 6

25 Simulation a gleich b true true VERGLEICHE = 6
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true true i = 1 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 6

26 Simulation a gleich b VERGLEICHE = 8
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 1 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 8

27 Simulation a gleich b true false VERGLEICHE = 8
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true false i = 1 j = 1 a = 1 2 3 b = 1 2 3 VERGLEICHE = 8

28 1 Durchlauf der WHILE-Schleife für i == 1 Aber: 4 Vergleiche
Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true 1 Durchlauf der WHILE-Schleife für i == 1 Aber: 4 Vergleiche false i = 1 j = 1 a = 1 2 3 b = 1 2 3 VERGLEICHE = 8

29 Simulation a gleich b false VERGLEICHE = 10
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 1 j = 1 a = 1 2 3 b = 1 2 3 false VERGLEICHE = 10

30 Simulation a gleich b true VERGLEICHE = 11
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true i = 2 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 11

31 Simulation a gleich b VERGLEICHE = 12
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 2 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 12

32 Simulation a gleich b true true VERGLEICHE = 12
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true true i = 2 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 12

33 Simulation a gleich b VERGLEICHE = 14
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 2 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 14

34 Simulation a gleich b true true VERGLEICHE = 14
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true true i = 2 j = 1 a = 1 2 3 b = 1 2 3 VERGLEICHE = 14

35 Simulation a gleich b VERGLEICHE = 16
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 2 j = 1 a = 1 2 3 b = 1 2 3 VERGLEICHE = 16

36 Simulation a gleich b true false VERGLEICHE = 16
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true false i = 2 j = 2 a = 1 2 3 b = 1 2 3 VERGLEICHE = 16

37 2 Durchläufe der WHILE-Schleife für i == 2 Aber: 6 Vergleiche
Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; true 2 Durchläufe der WHILE-Schleife für i == 2 Aber: 6 Vergleiche false i = 2 j = 2 a = 1 2 3 b = 1 2 3 VERGLEICHE = 16

38 Simulation a gleich b false VERGLEICHE = 18
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 2 j = 2 a = 1 2 3 b = 1 2 3 false VERGLEICHE = 18

39 Simulation a gleich b false VERGLEICHE = 19
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; false i = 3 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 19

40 Simulation a gleich b VERGLEICHE = 20
static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; i = 3 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 20

41 Ergebnis: TRUE Vergleiche: n2 + 3n + 2 = 20
Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) } return true; Ergebnis: TRUE Vergleiche: n2 + 3n + 2 = 20 i = 3 j = 0 a = 1 2 3 b = 1 2 3 VERGLEICHE = 20

42 Ergebnis Bester Fall für ungleiche Längen: 1
Bester Fall für gleiche Längen: a[0] nicht in b  TB = 4 + 2n Schlechtester Fall: Mengen sind gleich Da jedes Element nur einmal vorkommt braucht man unabhängig von der Reihenfolge 1 x keinen Durchlauf der WHILE-Schleife für i == i0 1 x 1 Durchlauf der WHILE-Schleife für i == i1 1 x 2 Durchläufe der WHILE-Schleife für i == i2 etc. Insgesamt (inklusive Schleifen-Abbrüche): n2 + 3n + 2

43 Herleitung TW

44 Herleitung TW

45 Herleitung TW Gaußsche Summen- formel

46 Tipps für Blatt 6 Aufgabe 6-1 Aufgabe 6-2 b)
Noch mal genau die Definition der O-Notation im Skript lesen Insbesondere muss die <= - Beziehung erst ab einem gewissen n0 gelten Bei j) Polynomdivision mit Rest Grenzwerte für n  ∞ anschauen Bedenken: in einer Summe entscheidet der Summand mit dem schnellsten Wachstum Aufgabe 6-2 b) Man kann so tun, als ob es tatsächlich n, log n, etc. viele Operationen gebe Für jeweils eine Operation denkt man sich eine Zeitkonstante Top , die natürlich unabhängig von n ist.

47 Tipps für Blatt 6 Aufgabe 6-2 c)
Im Taschenrechner mit großen Zahlen für n ausprobieren Wenn f(n) langsamer wächst als g(n), dann gilt: Graphen zeichnen lassen Online auf Sehr interessante und mächtige Such-/Informationsmaschine mit Mathe-Funktionen von Mathematica. Relativ kompliziert, Dokumentation für Mathe-Funktionen unter GeoGebra (http://www.geogebra.org) Sehr leicht zu benutzen

48 Einige einfache Klassen


Herunterladen ppt "Einführung in die Informatik: Programmierung und Software-Entwicklung"

Ähnliche Präsentationen


Google-Anzeigen