10. Fortgeschrittene Programmiertechniken Fortgeschrittene Programmiertechniken
|
|
- Hans Siegel
- vor 7 Jahren
- Abrufe
Transkript
1 Fortgeschrittene Programmiertechniken 10-1
2 Zu den fortgeschrittenen Techniken gehören: Verwendung von komplexeren Datenstrukturen, z. B. von geschachtelten Strukturen, Baumstrukturen usw. Verwendung von vordefinierten und/oder standardisierten Algorithmen, z. B. Such- und Sortieralgorithmen Verwendung der Rekursion in Daten und Kontrollstrukturen Verwendung von speziellen Datenorganisationen, z. B. Hash-Tabellen und hash-verfahren Verwendung von objektorientierten Programmiertechniken Softwareagenten-Technologien u. v. a. 10-2
3 Geschachtelte Strukturen a) stufenweise Definition: #define STUD_ANZAHL Fortgeschrittene Programmiertechniken struct gruppe { /* Komponenten */ int fachrichtung; int semester; int matrikelnummer; ; struct name { char nachname [20]; char vorname [16]; ; 10-3
4 struct geburtsdatum { int jahr; int monat; int tag; ; 10. Fortgeschrittene Programmiertechniken struct student { /* Deklaration der Schablone "Student" */ struct gruppe bezeichnung; struct name familienname; struct geburtsdatum g_datum; ; struct student tab_stud [STUD_ANZAHL]; /* Definition der Tabelle für Daten von Studenten */ 10-4
5 b) inline Definition: #define STUD_ANZAHL 550 struct student { struct gruppe { int fachrichtung; int semester; int matrikelnummer; ; struct name { char nachname [20]; char vorname [16]; ; struct geburtsdatum { int jahr; int monat; int tag; tab_stud [STUD_ANZAHL]; 10-5
6 Zugriff zu den Komponenten (Beispiele): struct student *rn, *rq; struct name person_name; /* Variablen für Demo */ struct geburtsdatum dat; int geburtsjahr, geb_j2; char *surname;... rn = tab_stud; /* Adressenzuweisungen */ rq = &tab_stud[i]; person_name = (rn+i)->familienname; /* Wertzuweisungen */ dat = (rn+i)->g_datum; geburtsjahr = (rn+i)->g_datum.jahr; strcpy (surname, (rn+i)->familienname.nachname); geb_j2 = rq->g_datum.jahr /* oder rq = (*rq).datum.jahr */ 10-6
7 Suchverfahren direkte Suche binäre Suche Fibonacci Suche 10. Fortgeschrittene Programmiertechniken Merkmale elementarer Suchverfahren Schlüssel sind eindeutig, d.h. es gibt keine Mehrfachtreffer Die Schlüsselmenge besitzt eine lineare Ordnung Es sind nur Schlüsselvergleiche erlaubt Ergebnis einer Suche ist das gefundene Item oder eine Fehlanzeige 10-7
8 Direkte Suche 10. Fortgeschrittene Programmiertechniken im Text int SearchTxt (char *s, char *p) { int n, m; // String - Musterlänge int i, j; // Suchzeiger unsigned int found; // Flag: 1 == gefunden, 0 == nicht gefunden n = strlen(s); m = strlen(p); for (i=0; i<n-m+1; i++) { found = 1; for (j=0; j<m; j++) if (s[i+j]!= p[j]) found = 0; if (found == 1) return (i); return(-1); 10-8
9 in Feldern // SearchSeq: Sequentielles Suchen in einem Array // Parameter: A Zahlenfeld, in dem gesucht wird // n Anzahl der gültigen Feldelemente // item gesuchtes Element // int SearchSeq (int *A, int n, int item) { int i; // Laufvariable A[0] = item; // Stopper-Element besetzen i = n + 1; // An das rechte Ende zeigen while (item!= A[--i]); // Von rechts suchen return (i); // Index des Item oder 0 zurückliefern 10-9
10 in Tabellen int seq_search (int key, item *t, item *result, int p) /* Funktion seq_search für seq. Suche in der Tabelle t */ /* Parameter: key - Schlüssel der gesuchten Ware, t - Name der durchgesuchten Tabelle, result - Zeiger auf die Speicherzone, auf die das gesuchte Item abgespeichert werden soll, p - Länge der Tabelle */ /* Funktionswert: 0, wenn das Item gefunden war, -1, wenn nicht */ { int i; /* Variable für Indizes */ for (i=0; i<p; i++) if (t[i].num == key) { *result = t[i]; /* Item gefunden */ return (0); return (-1); /* Item nicht gefunden */ 10-10
11 Binäre Suche Prinzip: Halbierung des Feldes Bedingung: Das durchgesuchte Feld muss geordnet werden! int bin_search (int key, item *t, item *result) /* Funktion bin_search für binäre Suche in der Tabelle t */ /* Parameter: key - Schlüssel der gesuchten Ware, t - Name der durchgesuchten Tabelle, result - Zeiger auf die Speicherzone */ /* Funktionswert: 0, wenn das Item erfolgreich gefunden, -1, wenn das Item nicht gefunden war */ { int m, left, right; /* Variablen für Indizes */ left = 0; /* Initialisierung von Suchgrenzen */ right = N-1; 10-11
12 while (left<=right) { /* Ende - Bedingung */ m = (left+right) / 2; /* Mitte des Intervals */ if (t[m].num < key) left = m+1; /* Suche in der höheren Hälfte */ else if (t[m].num > key) right = m-1; /* in der unteren Hälfte */ else if (t[m].num == key) { *result = t[m]; /* Item gefunden */ return (0); else return (-1); /* Item nicht gefunden */ 10-12
13 Fibonacci Suche Prinzip: Aufteilung des Feldes nach Fibonacci Zahlen Bedingung: Das durchgesuchte Feld muss geordnet werden! 10-13
14 Beispiel: 10-14
15 Sortierverfahren 10. Fortgeschrittene Programmiertechniken direkte versus indirekte Verfahren interne versus externe Verfahren sequentielle versus parallele Verfahren fortgeschrittene und kombinierte Verfahren Merkmale elementarer Sortierverfahren Sie nutzen keine Eigenschaften der Datenstruktur aus Sie verwenden als Operationen nur Schlüsselvergleiche und Transporte Sie besitzen eine relativ hohe Komplexität O(N 2 ) Komplexitätrelevante Operationen Vergleiche (Comparisons) Transport-Operationen (Movements) 10-15
16 Beispiele elementarer Sortierverfahren: das Selection-Sort Verfahren das Insertion-Sort Verfahren das Shell-Sort Verfahren Das Bubble-Sort Verfahren Beispiele spezieller Sortierverfahren: das Quick-Sort Verfahren das Heap-Sort Verfahren das Merge-Sort Verfahren Das Radix-Sort Verfahren 10-16
17 Beispiel das Bubble-Sort Verfahren: /* */ /* Bubble Sort - Sortieren durch lokales Vertauschen */ /* */ void BubbleSort (elem F[], int L) { /* F... das zu sortierende Feld von Items */ /* L... Zahl von sortierten Feldelementen */ int j; /* "Zeiger" in die zu sortierende Liste */ elem Item; /* Zwischenspeicher zum Vertauschen */ int XCHG; /* TRUE, wenn eine Vertauschung vorkam */ /* L... letzte Position der aktuellen Teilliste */ 10-17
18 do { /* XCHG zeigt an, ob bei dieser Teilliste eine */ XCHG = 0; /* Vertauschung vorgenommen werden musste */ for (j=0; j<l; j++) /* aktuelle Teilliste durchlaufen,dabei vertauschen */ if (F[j].key > F[j+1].key) { Item = F[j]; /* Vertausch */ F[j] = F[j+1]; F[j+1] = Item; XCHG = 1; L--; while (XCHG); /* läuft solange zwei Elemente vertauscht wurden */ 10-18
19 2. Variante mit Zeigern: 10. Fortgeschrittene Programmiertechniken void BubbleSort (elem *F, int L) /* F... Zeiger auf das zu sortierende Feld von Items */ /* L... Zahl von sortierten Feldelementen */ { elem *H; /* Zeiger auf das zu sortierende Feld */ elem Item; /* Zwischenspeicher zum Vertauschen */ int XCHG; /* TRUE, wenn eine Vertauschung vorkam */ /* L... letzte Position der aktuellen Teilliste */ do { XCHG = 0; /* XCHG zeigt an, ob bei dieser Teilliste */ /* eine Vertauschung vorgenommen werden musste */ 10-19
20 for (H=F; H<F+L; H++) /* aktuelle Teilliste */ /* durchlaufen und vertauschen */ if (H->key > (H+1)->key) { Item = *H; /* Vertausch */ *H = *(H+1); *(H+1) = Item; XCHG = 1; L--; while (XCHG); /* läuft solange zwei Elemente vertauscht wurden */ 10-20
21 Beispiel das Shell-Sort Verfahren: int shellsort (int v[], int n) { int gap, i, j, temp; /* v[0].. v[n-1] aufsteigend sortieren */ for (gap = n/2; gap > 0; gap /= 2) for (i = gap; i < n; i++) for (j =i-gap; j>=0 && v[j]>v[j+gap]; j-=gap) { temp = v[j]; v[j] = v[j+gap]; /* Items wechseln */ v[j+gap] = temp; 10-21
22 Rekursion 10-22
23 Rekursion 10. Fortgeschrittene Programmiertechniken in Datenstrukturen (rekursiv definierte Strukturen) Listen L w 1 w 2 w 3 w 4 w 5 Deklaration (Schablone): struct list_el { /* Struktur Listenelement */ ; int wert; struct list_el *next; 10-23
24 Bäume 10. Fortgeschrittene Programmiertechniken Kurt Franz Rolf Dieter Hans Leo W Werner Erich Karl 10-24
25 Definition des Knotens: Kurt linker Sohn rechter Sohn Deklaration (Schablone): struct knoten { char *inhalt; /* diesmal Zeiger auf String */ struct knoten *links, *rechts; ; 10-25
26 in Algorithmen (Programmen) Jedes Verfahren kann in allgemein folgendermaß definiert werden: P = ( S i, P ) Jeder rekursive Aufruf muss aber durch Erfüllung einer Bedingung beendet werden, d.h. oder besser P = if B then ( S i, P ), P = ( S i, if B then P )
27 Beispiel: Berechnung der Fakultät-Funktion long fak_rek (int n) { if (n > 1) return (n * fak_rek (n-1)); else return (n); ohne Rekursion: long fak_it (int n) { int i; long f = 1; if (n > 1) { for (i=1; i<=n; i++) f *= i; return (f); else return (n); 10-27
28 Inhalt des Binärbaumes sortiert ausgeben: Definition: struct knoten { char *inhalt; /* diesmal Zeiger auf String */ struct knoten *links, *rechts; *Baum; Algorithmus der Ausgabe: void Ausgeben (struct knoten *B) { /* Baum B ausgeben */ if (B!= NULL) { Ausgeben (B->links); printf ("%s, ", *(B->inhalt)); Ausgeben (B->rechts); 10-28
29 Hanoi Türme: /********************************************************** * Türme von Hanoi: Ausgabe der Züge für diese Türme * **********************************************************/ void turm (char quelle, char hilf, char ziel, int k) { if (k==1) /* Ende der Rekursion */ printf (" %c -> %c\n", quelle, ziel); else { turm (quelle, ziel, hilf, k-1); printf (" %c -> %c\n", quelle, ziel); turm (hilf, quelle, ziel, k-1); 10-29
30 Rekursives Sortierverfahren Quick-Sort quicksort (int a[], int left, int right) { /* aufsteigend sort. */ int i, j, pivot, temp; i = left; j = right; pivot = a[(left+right)/2]; do { while (a[i] < pivot) i++; while (a[j] > pivot) j--; if (i <= j) { temp = a[i]; a[i] = a[j]; /* Items wechseln */ a[j] = temp; i++; j--; while (i <= j); if (left < j) quicksort (a, left, j); if (i < right) quicksort (a, i, right); 10-30
31 Zusammenfassung 10. Fortgeschrittene Programmiertechniken Verwendung von mehrfach strukturierten Datenobjekten sowie auch standardisierten Algorithmen und Methoden (Suchverfahren, Sortierverfahren usw.) vereinfacht das Schreiben von Programmen und erhöht ihre Übersichtlichkeit. Mehrheit von effizienten Suchalgorithmen (binäre Suche, Fibonacci-Suche u.v.a.) verlangt das Sortieren (Aneinanderreihung) des Suchraumes nach dem Suchschlüssel. Wenn die zu durchsuchenden Daten nach dem Schlüssel nicht sortiert sind, ist nur der Algorithmus der sequentiellen Suche zu verwenden. Direkte und indirekte Sortiermethoden sind zu verwenden. Direkte Methoden ändern die physische Aneinanderreihung von Daten, indirekte Methoden benutzen zur Aneinanderreihung verschiedene Hilfsstrukturen (Adressierungsvektoren oder -tabellen, verkettete Listen, Baumstrukturen usw.)
32 Verwendung von Sortiermethoden ist vom Vorsortieren der zu sortierenden Datenfolgen abhängig. Verwendung der Rekursion vereinfacht wesentlich die Zerlegung von Verarbeitungsverfahren und die Erzeugung von Programmen. Es ist die Rekursion in Datenstrukturen und in Kontrollstrukturen (Programmen, Prozeduren, Funktionen,...) zu unterscheiden. Rekursive Algorithmen und Programme sind sehr übersichtlich, aber ihre Verarbeitungskomplexität ist often höher, als bei den klassischen (sequentiellen oder iterativen) Programmstrukturen. Verwendung der Rekursion in Kontrollstrukturen (Programmen) ist meistens berechtigt, falls die benutzten Datenstrukturen auch rekursiv definiert werden (Algorithmen der Suche in Listen, Bäumen, usw.)
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung
Mehr3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
MehrGrundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 01/05 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen lernen 3 Klassifizierung
MehrGrundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch
MehrGrundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.
MehrElementare Sortierverfahren
Algorithmen und Datenstrukturen I Elementare Sortierverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Sortieren.......................................
MehrDefinition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:
HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
Mehr8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
MehrDatenstrukturen Kurzanleitung
Datenstrukturen Kurzanleitung Insertionsort p = (7, 5, 4, 83, 6, 6) n = 6 Start: K ist sortierte Folge. Für i =, 3, 4,..., n: Füge ki in eine sortierte Folge ( k, k, k 3,..., k n ) in der richtigen Position
MehrInformatik II Sortieren
lausthal Sortieralgorithmen Informatik II Sortieren Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die die meiste Rechenzeit verbrauchen viele raffinierte Methoden
MehrInformatik II Sortieren
lausthal Informatik II Sortieren. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Sortieralgorithmen Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die
MehrProgrammiertechnik II
Sortieren: Einfache Algorithmen Sortieren Abstrakte Operation geg: Menge von items (Elemente) jedes Element besitzt Sortierschlüssel Schlüssel unterliegen einer Ordnung eventuell sind doppelte Schlüssel
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
MehrÜbersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Algorithmus Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-5/dsal/ 2 7.
MehrSuchen und Sortieren
Suchen und Sortieren Suchen Sortieren Mischen Zeitmessungen Bewertung von Sortier-Verfahren Seite 1 Suchverfahren Begriffe Suchen = Bestimmen der Position (Adresse) eines Wertes in einer Datenfolge Sequentielles
MehrKapitel 6 Elementare Sortieralgorithmen
Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine
MehrAlgorithmen und Programmieren II
Algorithmen und Programmieren II Sortieralgorithmen (Teil III) 2 46 69 4 5 6 4 4 0 8 9 0 6 4 2 Prof. Dr. Margarita Esponda Sortieralgorithmen Vergleichs- Algorithmen quadratisch Bubblesort O(n 2 ) Insertsort
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Fortgeschrittene Datenstrukturen Such-Algorithmen
MehrProf. Dr. Margarita Esponda
Algorithmen und Programmieren II Sortieralgorithmen imperativ Teil I Prof. Dr. Margarita Esponda Freie Universität Berlin Sortieralgorithmen Bubble-Sort Insert-Sort Selection-Sort Vergleichsalgorithmen
Mehr14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum
MehrAbschnitt 19: Sortierverfahren
Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrHeapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Sortieren von Feldern (2) Effiziente Sortieralgorithmen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 124 Quicksort Dr. Frank Seifert Vorlesung Datenstrukturen
MehrMergesort. Inhaltsverzeichnis. Veranschaulichung der Funktionsweise. aus Wikipedia, der freien Enzyklopädie
Mergesort aus Wikipedia, der freien Enzyklopädie Mergesort ist ein rekursiver, stabiler Sortieralgorithmus, der ähnlich wie Quicksort nach dem Prinzip Teile und herrsche (engl. Divide and conquer) arbeitet.
Mehr8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
MehrHeapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
MehrAlgoDat Fragen zu Vorlesung und Klausur
AlgoDat Fragen zu Vorlesung und Klausur Hochschule Fulda FB AI Sommersemester 2018 http://ad.rz.hs-fulda.de Peter Klingebiel, HS Fulda, AI Vorab: Was ist wichtig? AlgoDat - Fragen - Peter Klingebiel -
Mehr1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...
ALP II Objektorientierte Programmierung SS 2012 Prof. Dr. Margarita Esponda 1. Teilklausur Name:... Vorname:... Matrikel-Nummer:... Ich bin mit der Veröffentlichung der Klausurergebnisse mit Matrikel-Nummer
Mehr2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :
2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine
MehrJAVA - Suchen - Sortieren
Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik
MehrPro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik
Tag 18 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 09.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:
MehrGrundlagen der Programmierung 2. Sortierverfahren
Grundlagen der Programmierung 2 Sortierverfahren Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 30. Mai 2006 Sortieren Ziel: Bringe Folge von Objekten in eine Reihenfolge
MehrPräsenzübung Datenstrukturen und Algorithmen SS 2014
Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik
MehrInterne Sortierverfahren
Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm
MehrAlgorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen
MehrKapitel 2. Weitere Beispiele Effizienter Algorithmen
Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte
MehrPrüfung Algorithmen und Datenstrukturen I
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF 3 B Wintersemester 2016/17 Prüfung Algorithmen und Datenstrukturen I Datum : 23.01.2017, 08:30 Uhr
MehrAlgorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu
MehrKapitel 3: Sortierverfahren Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
Mehra) Erläutern Sie die Vorteile der Konstrukte zur Fehlerbehandlung in Java.
Aufgabe 11 Ausnahmebehandlung a) Erläutern Sie die Vorteile der Konstrukte zur Fehlerbehandlung in Java. Lösungsvorschlag: Wartbarkeit und Übersichtlichkeit des Programmcodes: Durch die Fehlerbehandlung
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrKap. 3: Sortieren (3)
Kap. 3: Sortieren (3) Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 6. VO DAP2 SS 2009 30. April 2009 Überblick Quick-Sort Analyse von Quick-Sort Quick-Sort
Mehr(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016
(Digital) Sorting October 2, 2016 Algorithms & Datastructures 2 Exercises WS 2016 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz kurz@pervasive.jku.at
MehrWerden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
7. Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Weitere Sortierverfahren Merge Sort Heap Sort Praktische Auswirkungen der Laufzeitabschätzungen
Mehr(08 - Einfache Sortierverfahren)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um
MehrAlgorithms & Data Structures 2
Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN
MehrSortieralgorithmen OOPM, Ralf Lämmel
Unterhaltet Euch mal mit Euren Großeltern wie Sortieren früher funktionierte! Sortieralgorithmen OOPM, Ralf Lämmel 230 Eine unsortierte Liste 7 3 2 5 2 3 5 7 Die sortierte Liste 231 Wiederholung: Das Problem
MehrDatenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group
MehrInhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe
Inhaltsverzeichnis Einführende Bemerkungen 11 Das Fach Informatik 11 Zielsetzung der Vorlesung 12 1. Grundbegriffe 1 3 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Information und Nachricht 1.1.1 Information 1.1.2 Nachricht
MehrKapitel 9 Suchalgorithmen
Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in
MehrSortierverfahren. Sortierverfahren für eindimensionale Arrays
Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung
MehrGliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen
5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume
Mehrf 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale
MehrKapitel 10. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrSortieren Anordnen einer gegebenen Menge von Objekten in einer bestimmten Ordnung.
Informatik II - 195 Kapitel 9 Sortierverfahren Sortieren Anordnen einer gegebenen Menge von Objekten in einer bestimmten Ordnung Sortierte Folgen von Objekten bringen eine deutliche Vereinfachung für den
MehrKlausur Algorithmen und Datenstrukturen
Technische Universität Braunschweig Wintersemester 2013/2014 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Stephan Friedrichs Klausur Algorithmen und
MehrDr. Monika Meiler. Inhalt
Inhalt 12 Strukturierte Datentpen - Strukturen... 12-2 12.1 Definition und Deklaration von Strukturtpen und Strukturen... 12-2 12.2 Strukturen als Funktionsparameter und Funktionswert... 12-4 12.3 Felder
MehrZiele. Kapitel 10: Komplexität von Algorithmen und Sortierverfahren. Beispiel: Lineare Suche eines Elements in einem Array (1)
Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 10: Komplexität von Algorithmen und Sortierverfahren Prof. Dr. David Sabel Lehr- und Forschungseinheit
MehrArrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss
Arrays FTI 41 2005-09-09 Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss z.b. Dim Werte(x) As Single. Wobei
MehrAlgorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg
MehrInhaltsverzeichnis. Teil 1 Grundlagen 23
Inhaltsverzeichnis Vorwort 11 Umfang 12 Einsatz als Unterrichtsmittel 12 Algorithmen mit Praxisbezug 13 Programmiersprache 14 Danksagung 15 Vorwort des C++-Beraters 16 Hinweise zu den Übungen 21 Teil 1
MehrSortieralgorithmen. Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort. Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004
Sortieralgorithmen Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004 Prof. Dr. W. P. Kowalk Universität Oldenburg Algorithmen und Datenstrukturen
MehrSuchen und Sortieren OOPM, Ralf Lämmel
Unterhaltet Euch mal mit Euren Großeltern wie Sortieren früher funktionierte! Suchen und Sortieren OOPM, Ralf Lämmel 2 Das Such-Problem Eingabe: Ein Feld a mit n Elementen vom Typ t. Ein Wert x vom Typ
MehrÜbung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
MehrInhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85
Inhaltsverzeichnis Vorwort 13 Umfang 14 Einsatz als Unterrichtsmittel 14 Algorithmen mit Praxisbezug 15 Programmiersprache 16 Danksagung 17 Vorwort des Java-Beraters 18 Hinweise zu den Übungen 19 Teil
MehrProbeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten
Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach
MehrHeapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50
Heapsort Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen 27.6.2007 / 50 Heapsort - Wiederholung Definition Array A[..n] mit Einträgen aus (U,
MehrInhalt. 3. Spezielle Algorithmen
Inhalt 0. Rechner und Programmierung für Kommunikationstechniker und Mechatroniker 1. Algorithmen - Wesen, Eigenschaften, Entwurf 2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen A7. Sortieren III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 Untere Schranke Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte
MehrAufgabenblatt: Arrays
Aufgabenblatt: Arrays - Seite 1 Aufgabenblatt: Arrays (1.) (a.) Erstellen Sie eine Methode, die in einem Array von Zahlen nach einem bestimmten Wert sucht! static int LinearSearch(int searchvalue, int
MehrProseminar Effiziente Algorithmen
Proseminar Effiziente Algorithmen Kapitel 4: Sortieren, Selektieren und Suchen Prof. Dr. Christian Scheideler WS 2017 Übersicht Sortieren Selektieren Suchen 08.11.2017 Proseminar EA 2 Sortierproblem 5
MehrProgrammierung 1 Studiengang MI / WI
Programmierung 1 Studiengang MI / WI Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://mwilhelm.hs-harz.de Raum 2.202 Tel. 03943 /
MehrTutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.
Mehr4. Sortieren 4.1 Vorbemerkungen
. Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig
MehrReihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrCopyright, Page 1 of 7 Heapsort
www.mathematik-netz.de Copyright, Page 1 of 7 Heapsort Alle grundlegenden, allgemeinen Sortierverfahren benötigen O(n 2 ) Zeit für das Sortieren von n Schlüsseln. Die kritischen Operationen, d.h. die Auswahl
MehrMi, 21. Mai, ab 12:30 Uhr, in E23 (OH14) Dann ab 14:30 Uhr: Motivation: Gegeben: hier: später: Aufgabe:
Kap. 4: Suchen in Datenmengen Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 0. VO DAP2 SS 2008 5. Mai 2008 Ankündigung Mentoring Mi, 2. Mai, ab 2:30 Uhr, in
MehrInformatik II, SS 2016
Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm
MehrA7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.
Algorithmen und Datenstrukturen 14. März 2018 A7. III Algorithmen und Datenstrukturen A7. III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 A7.1 Untere Schranke A7.2 Quicksort A7.3 Heapsort
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 4 (30.4.2018) Sortieren IV Algorithmen und Komplexität Analyse Merge Sort Laufzeit T(n) setzt sich zusammen aus: Divide und Merge: O n
Mehr6 Algorithmen und Datenstrukturen
84 tion in der Lage sein, aus einem Bereich solcher Buchwerte nur die Titel auszuwählen. Das folgende Beispiel veranschaulicht die Verwendung dieser Funktion: struct book int id; std::string title; std::string
MehrÜbung Datenstrukturen. Sortieren
Übung Datenstrukturen Sortieren Aufgabe 1 Gegeben sei nebenstehender Sortieralgorithmus für ein Feld a[] ganzer Zahlen mit N Elementen: a) Um welches Sortierverfahren handelt es sich? b) Geben Sie möglichst
MehrHeapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
MehrAlgorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier
Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,
Mehr