Numerische Methoden und Algorithmen in der Physik

Größe: px
Ab Seite anzeigen:

Download "Numerische Methoden und Algorithmen in der Physik"

Transkript

1 Numerische Methoden und Algorithmen in der Physik Hartmut Stadie, Christian Autermann Numerische Methoden und Algorithmen in der Physik Christian Autermann 1/ 40

2 Einführung Datenfelder Sortieralgorithmen Vergleich von Datenstrukturen Numerische Methoden und Algorithmen in der Physik Christian Autermann 2/ 40

3 Übersicht Einführung Literaturliste Sortierung Datenfelder Sortieralgorithmen Vergleich von Datenstrukturen Numerische Methoden und Algorithmen in der Physik Christian Autermann 3/ 40

4 Informationen Material: B. Stroustrup: The C++ Programming Language, 3rd edition cpp/ B. Stroustrup: C++ In-depth Series A. Koenig, B. E. Moo: Accelerated C++ W. H. Press et al: Numerical Recipes, 3rd edition T. H. Cormen et al: Introductions to Algorithms, 2nd edition Numerische Methoden und Algorithmen in der Physik Christian Autermann 4/ 40

5 Sortierung Ein Beispiel aus der Praxis Die CDF and DØ Experimente am Tevatron Beschleuniger haben seit 2001 jeweils etwa Ereignisse aufgezeichnet (eine Datenmenge von der Größenordnung Petabyte). Eine wichtige Größe, sowohl zur Rekonstruktion der Ereignisse, als auch für die Effizienz des Beschleunigers, ist die exakte Lage der Wechselwirkung z 0. Die Größe z 0 möchte man z.b. in bezug auf die Zeit, die Temperatur, Luminosität, etc untersuchen, d.h. sortieren. Weitere Beispiele: Datenbanken, Google,... Numerische Methoden und Algorithmen in der Physik Christian Autermann 5/ 40

6 Sortieralgorithmus: Insertion-Sort Sortierung von Karten Füge Karten nacheinander und sortiert ein Solange bis alle Karten aufgenommen sind Numerische Methoden und Algorithmen in der Physik Christian Autermann 6/ 40

7 Insertion-Sort: Pseudo-Code Aufgabe Sortierung des folgendes Feldes A: for j=1 bis Länge(A) Schlüssel = A[j] //Das Element an Position "j" wird in den schon //sortierten Abschnitt 1..j-1 von A eingefügt i = j-1 while i>0 und A[i]>Schlüssel A[i+1] = A[i] i = i-1 A[i+1] = Schlüssel Numerische Methoden und Algorithmen in der Physik Christian Autermann 7/ 40

8 Datenfelder Datenstruktur zur Aufnahme mehrerer Variablen gleichen Typs. Beispiele für Datenfelder in C++: Das Array, z.b. int MeinArray[6]; Der Vector der Standard Template Library (STL) std::vector<int> MeinVector; Die Map der STL std::map<float,int> MeineMap; Numerische Methoden und Algorithmen in der Physik Christian Autermann 8/ 40

9 Übersicht Einführung Datenfelder Das Array Der STL vector Die STL map Sortieralgorithmen Vergleich von Datenstrukturen Numerische Methoden und Algorithmen in der Physik Christian Autermann 9/ 40

10 Das Array Das Array ist eine Menge von Elementen gleichen Typs Funktioniert mit allen Typen Sie sind im Speicher hintereinander abgelegt Deklaration: Typ Name [Größe]; Beispiele: float A[10]; int B[ 5] = {3, 1, 4, 1, 5}; int C[ ] = {3, 1, 4, 1, 5, 9, 2, 6, 5}; C[0] C[1] C[2] C[3] C[4] C[5] C[6] C[7] C[8] Numerische Methoden und Algorithmen in der Physik Christian Autermann 10/ 40

11 Zugriff auf Arrays Schreiben und Auslesen von Elementen eines Arrays. #include <iostream> //std::cout, std::endl using namespace std; int main(void) { float C[] = {3.0, 1.1, 4.2, 1.3, 5.4, 9.5, 2.6, 6.7, 5.8, 3.9}; int Index; float NeuerWert; while ( true ) { cout << "Index = "; cin >> Index; } } cout << "C[Index] = " << C[Index] << " Neuer Wert = "; cin >> NeuerWert; C[Index] = NeuerWert; Numerische Methoden und Algorithmen in der Physik Christian Autermann 11/ 40

12 Zugriff auf Arrays Schreiben und Auslesen von Elementen eines Arrays. #include <iostream> //std::cout, std::endl using namespace std; int main(void) { float C[] = {3.0, 1.1, 4.2, 1.3, 5.4, 9.5, 2.6, 6.7, 5.8, 3.9}; int Index; float NeuerWert; Achtung: bug! for (; true; ) { cout << "Index = "; cin >> Index; if (Index<0 Index>9) continue; cout << "C[Index] = " << C[Index] << " Neuer Wert = "; cin >> NeuerWert; C[Index] = NeuerWert; } } Numerische Methoden und Algorithmen in der Physik Christian Autermann 12/ 40

13 Vorteile von Arrays Einfach Schneller Zugriff Nachteile von Arrays Die Größe muss zum Zeitpunkt der Kompilation bekannt sein (Workaround mit Zeigern existiert) Die Größe ist fest und kann nicht verändert werden Der Ort im Speicher eines Elementes ist fest durch den Index bestimmt. Sortieren erfordert das Kopieren der Elemente ( 3). Langsam für Element-Typen größer als int. Numerische Methoden und Algorithmen in der Physik Christian Autermann 13/ 40

14 Deklaration std::vector<typ> Name; Beispiel: Der STL vector #include <vector>; using std::vector; vector<int> A; //Library //Der namespace std //Deklaration Der std::vector ist bei der Deklaration leer, Elemente können bei der Deklaration übergeben werden, oder zu Laufzeit des Programms gefüllt werden. vector<int> A(2, 1); //Inhalt von "A": 1 1 A.push_back( 4 ); //Inhalt von "A": A.pop_back(); //Inhalt von "A": 1 1 cout << A[0] << A.at(0); // 11 cout << A[5]; cout << A.at(5); //segmentation fault: Programm Abbruch! //Signal std::out_of_range : Programm Abbruch! Numerische Methoden und Algorithmen in der Physik Christian Autermann 14/ 40

15 Zugriff auf den std::vector Der std::vector<int> A sei gefüllt mit 10 Elementen //Rückwertskompatibel zur Array-Syntax: for (int i=0; i!=a.size(); ++i) cout <<"A[i]=" <<A[i] <<endl; //C++ Zugriff: for (vector<int>::const_iterator it = A.begin(); it!=a.end(); ++it) cout <<"A[i]" << *it <<endl; Der Iterator it zeigt auf ein Element des vectors. (*it) ist das Element. Der Operator * dereferenziert. vector::begin() zeigt auf das erste Element, vector::end() zeigt auf die Position hinter dem letzten Element. Mit einem const_iterator kann der vector nicht verändert werden. Numerische Methoden und Algorithmen in der Physik Christian Autermann 15/ 40

16 (Ausgewählte) Methoden des std::vector<> (constructor) (destructor) operator= Iterators: begin end rbegin rend Capacity: size empty Element access: operator[] at front back Modifiers: push_back pop_back insert erase clear Construct vector Vector destructor Copy vector content Return iterator to beginning Return iterator to end Return reverse iterator to reverse beginning Return reverse iterator to reverse end Return size Test whether vector is empty Access element Access element Access first element Access last element Add element at the end Delete last element Insert elements Erase elements Clear content Numerische Methoden und Algorithmen in der Physik Christian Autermann 16/ 40

17 Beispiel: Bestimmung des Median Der Median ist das Element, welches eine Menge in zwei gleich große Hälften teilt. #include <iostream> #include <vector>; #include <algorithm> using namespace std; //std::sort int main() { vector<float> Menge; float Zahl; while (cin >> Zahl) Menge.push_back( Zahl ); //Einlesen von Zahlen sort(menge.begin(), Menge.end()); //Eine Sortierfunktion int Mitte = Menge.size()/2; cout << "Median = " << (Menge.size()%2==0? (Menge[Mitte]+Menge[Mitte-1])/2.0 : Menge[Mitte]) << endl; } Numerische Methoden und Algorithmen in der Physik Christian Autermann 17/ 40

18 Die STL map Deklaration std::map<typ1, Typ2> Name; Beispiel: #include <map>; using std::map; map<string, int> A; //Library //Der namespace std //Deklaration Die std::map ist bei der Deklaration leer, Neue Elemente werden sortiert (in bezug auf das 1. Element) eingefügt! A["Christian"] = 1; A["Hartmut"] = 2; cout << A["Christian"]; // 1 cout << A[2]; // Kompilationsfehler! cout << A["2"]; // 0 Numerische Methoden und Algorithmen in der Physik Christian Autermann 18/ 40

19 Zugriff auf die std::map mittels des Schlüssels std::map<typ1, Typ2> Name; Das erste Element ist der Schlüssel, der zweite der Wert. Der Zugriff erfolgt durch den Schlüssel, der Schlüssel kann nicht verändert werden! Zugriff auf die std::map mittels Iteratoren std::map<string, int> A; Analog zum std:: vector gibt es verschiedene Iteratoren: Mit einem const_iterator kann auch der Wert nicht verändert werden. for (map<string, int>::iterator it=a.begin(); it!=a.end(); ++it) { cout << " A[" << it->first << "] = " << it->second << endl; ++(it->second); } Numerische Methoden und Algorithmen in der Physik Christian Autermann 19/ 40

20 (Ausgewählte) Methoden der std::map<> Iterators: begin end Capacity: size empty Element access: operator[] Modifiers: insert erase swap clear Observers: key_comp value_comp Operations: find count lower_bound upper_bound equal_range Return iterator to beginning Return iterator to end Return size Test whether vector is empty Access element Insert element Erase elements Swap content Clear content Return key comparison object Return value comparison object Get iterator to element Count elements with a specific key Return iterator to lower bound Return iterator to upper bound Get range of equal elements Numerische Methoden und Algorithmen in der Physik Christian Autermann 20/ 40

21 Beispiel: Zählen von Wörtern Aufgabe: Einlesen einer beliebigen Anzahl an Wörtern, Sortierte Ausgabe mit Anzahl der Vorkommnisse Numerische Methoden und Algorithmen in der Physik Christian Autermann 21/ 40

22 Beispiel: Zählen von Wörtern #include <iostream> #include <string> #include <map> using namespace std; int main() { string s; map<string, int> zaehler; } //Einlesen von Woertern, Zahlen, Buchstaben,... while (cin >> s) ++zaehler[s]; //Ausgeben der sortierten Woerter und ihrer Anzahl for (map<string, int>::const_iterator it = zaehler.begin(); it!= zaehler.end(); ++it) { cout << it->first << "\t" << it->second << endl; } Numerische Methoden und Algorithmen in der Physik Christian Autermann 22/ 40

23 Übersicht Einführung Datenfelder Sortieralgorithmen Übersicht Quicksort Heapsort Vergleich von Datenstrukturen Numerische Methoden und Algorithmen in der Physik Christian Autermann 23/ 40

24 Übersicht Eine der wichtigsten charakterisierenden Größen in bezug auf Algorithmen ist das Laufzeitverhalten (siehe letzte Übung). Bei großen Datenmengen ist ein Sortieralgorithmus mit einem Laufzeitverhalten wie Insertionsort mit n 2 inakzeptabel. Die hier vorgestellten Algorithmen Quicksort und Heapsort haben ein durchschnittliches Laufzeitverhalten auf unsortierten Feldern wie n ln n, wobei optimierte Quicksort Algorithmen in der Regel am schnellsten sind. Im worst-case Szenario unterscheiden sich Quicksort und Heapsort jedoch stark. Eine weitere charakterisierende Größe von Sortieralgorithmen ist die Stabilität. Ein Algorithmus ist stabil, wenn die relative Reihenfolge gleicher Elemente nicht verändert wird ( Übung). Numerische Methoden und Algorithmen in der Physik Christian Autermann 24/ 40

25 Quicksort Der Quicksort Algorithmus wurde 1962 C. A. R. Hoare entwickelt. Bei n zu sortierenden Elementen, benötigt der Algorithmus im Durchschnitt O(n ln n) Vergleiche. Wegen seiner strikten Teile-und-Herrsche Struktur lässt sich Quicksort sehr einfach parallelisieren. Bei genügend vielen Prozessoren ist die Laufzeit von der Ordnung O(n), oder sogar noch besser. Numerische Methoden und Algorithmen in der Physik Christian Autermann 25/ 40

26 Quicksort Algorithmus 1 Wähle ein Pivot (Referenz) Element 2 Sortiere alle anderen Elemente bezüglich des Pivot-Elementes in dem Feld: Ist ein Element kleiner als der Pivot, dann verschiebe es links neben den Pivot. Ist es größer dann verschiebe es nach rechts. 3 Die Position des Pivots wird sich nicht mehr ändern. Teile und Herrsche: Die zwei Abschnitte links und rechts des Pivots müssen noch (auf gleiche Art) sortiert werden. Rufe den Algorithmus für den linken und den rechten Abschnitt rekursiv auf! Numerische Methoden und Algorithmen in der Physik Christian Autermann 26/ 40

27 Quicksort Beispiel Numerische Methoden und Algorithmen in der Physik Christian Autermann 27/ 40

28 Quicksort Algorithmus: Pseudocode Funktion quicksort(feld A) Feld Kleiner, Groesser //Rekursionsabbruch: if Laenge( A ) <= 1 return A //Bestimme Pivot: Pivot = A[0] //Sortiere jedes Element entweder vor //oder hinter den Pivot: for each x in A if x <= Pivot then Kopiere x nach Kleiner else Kopiere x nach Groesser return quicksort(kleiner) + Pivot + quicksort(groesser) Numerische Methoden und Algorithmen in der Physik Christian Autermann 28/ 40

29 Quicksort Algorithmus Quicksort lässt sich in C++ recht einfach mit std::vector<> programmieren, da die Länge der Vektoren nicht festgelegt sein muss. Tipp: Eine Funktion, die zwei std::vector<float> als Argument übernimmt und (ohne die Reihenfolge zu ändern) zusammengefügt zurück gibt vector<float> Verbinde(const vector<float>& A, const vector<float>& B) { vector<float> Ergebnis( B ); Ergebnis.insert( B.begin(), A.begin(), A.end() ); return Ergebnis; } Numerische Methoden und Algorithmen in der Physik Christian Autermann 29/ 40

30 Heapsort Heapsort Algorithmus Die Heap-Struktur kann als binärer Baum verstanden werden. Diese Baumstruktur spielt auch in vielen weiteren Algorithmen eine wichtige Rolle. Die Tiefe des Heaps (Höhe des Baumes) ist gegeben durch ln n. Wie Insertionsort sortiert auch Heapsort ein Feld, ohne das Elemente oft kopiert werden müssen: Die Anzahl der Kopiervorgänge ist konstant. Numerische Methoden und Algorithmen in der Physik Christian Autermann 30/ 40

31 Der Heap Für ein Element mit Index i berechnet sich Vaterindex: p =abrunden(i/2) Schnelle Berechnung: p = i 1 Index links: l = 2 i Schnelle Berechnung: l = i 1 Index rechts: r = 2 i + 1 Schnelle Berechnung: r = (i 1)&1 Numerische Methoden und Algorithmen in der Physik Christian Autermann 31/ 40

32 Für Heapsort werden Max-Heaps benutzt. Ein Heap ist ein Max-Heap, wenn jedes Element A[i] an Index i größer (mind. gleich) ist, als beide Tocher-Elemente, also A[i] max(a[l], A[r]). Pseudocode: Max-Heapify Max-Heapifiziert den Heap an Index i, unter der Voraussetzung, dass beide Tocher-Heaps Max-Heaps sind MaxHeapify( A, i ) l = IndexLinks( i ) r = IndexRechts( i ) if l<=groesse(a) und A[l]>A[i] groesser = l else groesser = i if r<=groesse(a) und A[r]>A[l] groesser = r if groesser!=i Tausche_Element A[i] und A[groesser] MaxHeapify( A, groesser ) Numerische Methoden und Algorithmen in der Physik Christian Autermann 32/ 40

33 Max-Heapify Numerische Methoden und Algorithmen in der Physik Christian Autermann 33/ 40

34 Konstruktion eines Max-Heap Der Max-Heapify Algorithmus funktioniert für den Knoten i unter der Voraussetzung, dass die Tochterknoten bereits Max-Heaps sind. Pseudocode um aus einem unsortierten Feld einen Max-Heap zu konstruieren: KonstruiereMaxHeap( A ) for i=groesse(a)/2 bis 1 MaxHeapify( A, i ) Die Knoten mit Index Groesse(A)/2 bis Groesse(A) sind bereits Max-Heaps mit Größe 1. (Es sind die Blätter des Baumes.) Numerische Methoden und Algorithmen in der Physik Christian Autermann 34/ 40

35 Der Heapsort Algorithmus Man kann sicher sagen, dass das Element an der Wurzel des Heaps, also A[1] das größte Element ist, wenn der komplette Heap ein Max-Heap ist. Deshalb kann dieses Element A[1] mit dem letzten Element A[N] vertauscht werden. Das verbleibende Feld A[1..(N 1)] muss neu MaxHeapified werden, dann kann der Schritt iterativ wiederholt werden, bis das ganze Feld sortiert ist. HeapSort( A ) KonstruiereMaxHeap( A ) for i=groesse(a) bis 2 Tausche_Element A[i] und A[1] MaxHeapify( A[1..i], 1) Numerische Methoden und Algorithmen in der Physik Christian Autermann 35/ 40

36 Heapsort Numerische Methoden und Algorithmen in der Physik Christian Autermann 36/ 40

37 Übersicht Einführung Datenfelder Sortieralgorithmen Vergleich von Datenstrukturen STL Container Spezialisierung Zeiger Numerische Methoden und Algorithmen in der Physik Christian Autermann 37/ 40

38 Containerimplementationen verschiedene Container: vector; list; map Laufzeitverhalten: [] einfügen/löschen front back iterator vector const O(n)+ const+ random list const const const Bi queue const const map O(log(n) O(log(n))+ Bi string const O(n)+ O(n)+ const+ random Numerische Methoden und Algorithmen in der Physik Christian Autermann 38/ 40

39 Zeiger Für Typ T: T* ist Zeiger auf Objekt von Typ T. char c = a ; char* p = &c; //Adresse von c *p = b ; //Wert, auf den der Zeiger zeigt int *pi; //Zeiger auf int char** ppc; //Zeiger auf Zeiger auf char int* ap[15]; //Feld mit 15 Zeigern auf ints int (*fp)(char*); //Zeiger auf Funktion mit char* als //Argument und int* als Typ Numerische Methoden und Algorithmen in der Physik Christian Autermann 39/ 40

40 Zeiger und Felder Zeiger und Felder sind eng verwandt: int v[] = {1,3,5,6}; int *pv = v; //Zeiger auf erstes Element int *p2 = &v[0]; //gleich! int *p3 = &v[1]; //Zeiger auf zweites Element ++pv; //pv zeigt nun auf zweites Element p+1 erhöht die Adresse um size_of(t) Numerische Methoden und Algorithmen in der Physik Christian Autermann 40/ 40

Assoziative Container in C++ Christian Poulter

Assoziative Container in C++ Christian Poulter Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: inf@poulter.de Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...

Mehr

6 Algorithmen und Datenstrukturen

6 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

Einführung in die STL

Einführung in die STL Einführung in die STL Fimberger Lucia lfimberg@cosy.sbg.ac.at Nidetzky Marion mnidetzk@cosy.sbg.ac.at Was ist die STL? Abkürzung für Standard Template Library Eine generische Bibliothek Ist kaum objektorientiert,

Mehr

Sortieren durch Mischen (Mergesort; John von Neumann 1945)

Sortieren durch Mischen (Mergesort; John von Neumann 1945) Sortieren durch Mischen (Mergesort; John von Neumann 1945) Gegeben folgendes Feld der Größe 10. 3 8 9 11 18 1 7 10 22 32 Die beiden "Hälften" sind hier bereits vorsortiert! Wir können das Feld sortieren,

Mehr

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Neben vector ist list die zweite wichtige Containerklasse. Um unsere Kenntnisse von Containerklassen zu erweitern,

Mehr

Numerische Methoden und Algorithmen in der Physik

Numerische Methoden und Algorithmen in der Physik Numerische Methoden und Algorithmen in der Physik Hartmut Stadie, Christian Autermann 13.11.2008 Numerische Methoden und Algorithmen in der Physik Hartmut Stadie 1/ 28 Einführung Numerische Integration

Mehr

Übungsstunde: Informatik 1 D-MAVT

Übungsstunde: Informatik 1 D-MAVT Übungsstunde: Informatik 1 D-MAVT Daniel Bogado Duffner Übungsslides unter: n.ethz.ch/~bodaniel Bei Fragen: bodaniel@student.ethz.ch Daniel Bogado Duffner 25.04.2018 1 Ablauf Self-Assessment Pointer Iterators

Mehr

Algorithmen zur Datenanalyse in C++

Algorithmen zur Datenanalyse in C++ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 25.06.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 15 Einführung Zeiger, Felder und Strukturen Zufallszahlen für andere Verteilungen Algorithmen

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 08-25.04.2018 Lernziele const: Reference const: Pointer vector: iterator using Jonas Lauener (ETH Zürich) Informatik

Mehr

Programmier-Befehle - Woche 09

Programmier-Befehle - Woche 09 Zeiger und Iteratoren Zeiger (generell) Adresse eines Objekts im Speicher Wichtige Befehle: Definition: int* ptr = address of type int; (ohne Startwert: int* ptr = 0;) Zugriff auf Zeiger: ptr = otr ptr

Mehr

C++ Kurs Teil 3. Standard Template Library (STL) Kommunikation mit der shell Hyper Text Markup Language (HTML)

C++ Kurs Teil 3. Standard Template Library (STL) Kommunikation mit der shell Hyper Text Markup Language (HTML) C++ Kurs Teil 3 Standard Template Library (STL) Übersicht vector algorithm: sort, for_each map Kommunikation mit der shell Hyper Text Markup Language (HTML) O. Ronneberger: C++ Kurs Teil 3 Seite 1

Mehr

Die C++ Standard Template Library Andreas Obrist

Die C++ Standard Template Library Andreas Obrist Die C++ Standard Template Library 24. 06. 2004 Andreas Obrist Was dürft Ihr erwarten? 1. Teil Das Wichtigste in Kürze über die Standard Template Library 2. Teil Praktische Beispiele Was dürft Ihr nicht

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & 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

Mehr

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A) Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

Technische Universität München

Technische Universität München Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

C-Arrays vs. C++-Container

C-Arrays vs. C++-Container C-Arrays vs. C++-Container In C verwendet man (mangels Alternativen) sehr häufig das C-Array (= Feld): im Speicher hintereinander abgelegte Elemente vom gleichen Typ. Arrays haben einen Basistyp (Typ des

Mehr

C-Arrays vs. C++-Container

C-Arrays vs. C++-Container C-Arrays vs. C++-Container In C verwendet man (mangels Alternativen) sehr häufig das C-Array (= Feld): im Speicher hintereinander abgelegte Elemente vom gleichen Typ. Arrays haben einen Basistyp (Typ des

Mehr

Hier wird die Verwendung der Standard Template Library (kurz STL) kurz beschrieben. Inhalt 1.Verwendung der STL Grundlagen...

Hier wird die Verwendung der Standard Template Library (kurz STL) kurz beschrieben. Inhalt 1.Verwendung der STL Grundlagen... STL Die C++ Bibliothek ist eine Sammlung von standardisierten Klassen und Containern. Zu beachten ist, dass nicht jede C++ Implementierung den ganzen Umfang der Standardbibliothek realisiert hat. Hier

Mehr

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien

Mehr

Informatik für Mathematiker und Physiker Woche 7. David Sommer

Informatik für Mathematiker und Physiker Woche 7. David Sommer Informatik für Mathematiker und Physiker Woche 7 David Sommer David Sommer 30. Oktober 2018 1 Heute: 1. Repetition Floats 2. References 3. Vectors 4. Characters David Sommer 30. Oktober 2018 2 Übungen

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatorüberladung 2 Pointer Zeigervariable 3 CopyConstructor 4 Listen 5 Array String 6 STL Container

Mehr

Programmierkurs. Steffen Müthing. November 16, Interdisciplinary Center for Scientific Computing, Heidelberg University

Programmierkurs. Steffen Müthing. November 16, Interdisciplinary Center for Scientific Computing, Heidelberg University Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University November 16, 2018 Standardbibliothek Datenstrukturen Algorithmen Variablen und Referenzen Aufrufkonventionen

Mehr

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 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

Mehr

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16 C++ Teil 7 Sven Groß 3. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni 2016 1 / 16 Themen der letzten Vorlesung dynamische Speicherverwaltung (Wdh.) Cast bei Zeigern STL-Vektoren + Live Programming

Mehr

Polymorphismus 44. Function.hpp. #include <string>

Polymorphismus 44. Function.hpp. #include <string> Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

Tutoraufgabe 1 (Sortieralgorithmus): Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen 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

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen 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

Mehr

19. STL Container Programmieren / Algorithmen und Datenstrukturen 2

19. STL Container Programmieren / Algorithmen und Datenstrukturen 2 19. STL Container Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Kontrollfragen STL Container: Übersicht

Mehr

Auswählen nach Rang (Selektion)

Auswählen nach Rang (Selektion) Auswählen nach Rang (Selektion) Geg.: Folge X von n Schlüsseln, eine Zahl k mit k n Ges.: ein k-kleinster Schlüssel von X, also den Schlüssel x k für X sortiert als x x 2 L x n trivial lösbar in Zeit O(kn)

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen 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

Prüfung Algorithmen und Datenstrukturen I

Prüfung Algorithmen und Datenstrukturen I Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF 3 B Wintersemester 2014/15 Prüfung Algorithmen und Datenstrukturen I Datum : 20.01.2015, 10:30 Uhr

Mehr

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Definition 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

Mehr

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Programm 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

Mehr

Algorithmen zur Datenanalyse in C++

Algorithmen zur Datenanalyse in C++ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in

Mehr

C++ - Einführung in die Programmiersprache Standard Templates. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Standard Templates. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Standard Templates Leibniz Universität IT Services Anja Aue C++ - Standardbibliothek Standardisierte Sammlung von häufig vorkommenden Funktionen und Klassen.

Mehr

Prof. Dr. Margarita Esponda

Prof. 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

Mehr

Numerische Methoden und Algorithmen in der Physik

Numerische Methoden und Algorithmen in der Physik Numerische Methoden und Algorithmen in der Physik Hartmut Stadie, Christian Autermann 04.12.2008 Numerische Methoden und Algorithmen in der Physik Hartmut Stadie 1/ 33 Einführung Klassen Optimierung Vererbung

Mehr

C++ Teil 8. Sven Groß. 5. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez / 16

C++ Teil 8. Sven Groß. 5. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez / 16 C++ Teil 8 Sven Groß IGPM, RWTH Aachen 5. Dez 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez 2014 1 / 16 Themen der letzten Vorlesung Casts bei Zeigern dynamische Speicherverwaltung Vektoren Typedefs

Mehr

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5 Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II und Red-Black-Trees Dr. Georg Sauthoff 1 AG Praktische Informatik July 1, SoSe 2011 1 gsauthof@techfak.uni-bielefeld.de Suchbäume (Indexdatenstrukturen) Zugriff in O(logn)

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 179. Function.h. #include <string> Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function

Mehr

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Woche 6. Cedric Tompkin. April 11, Cedric Tompkin Woche 6 April 11, / 29

Woche 6. Cedric Tompkin. April 11, Cedric Tompkin Woche 6 April 11, / 29 Woche 6 Cedric Tompkin April 11, 2018 Cedric Tompkin Woche 6 April 11, 2018 1 / 29 Figure: Mehr Comics Cedric Tompkin Woche 6 April 11, 2018 2 / 29 Learning Objectives Dir kennst Return-by-value und Return-by-reference.

Mehr

Algorithmen und Programmieren II

Algorithmen 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

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist

Mehr

Programmieren in C++ Überblick

Programmieren in C++ Überblick Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;

Mehr

Programmieren 2 C++ Überblick

Programmieren 2 C++ Überblick Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

Mehr

3.2. Divide-and-Conquer-Methoden

3.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

Mehr

Kapitel 8 Fortgeschrittene Sortieralgorithmen

Kapitel 8 Fortgeschrittene Sortieralgorithmen Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n

Mehr

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14 C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil IV - Weiterführende Themen 13. Klassenbibliotheken Klassenbibliotheken Seite 2 Sammlung von Algorithmen und Klassen in Klassenbibliotheken: Konzept:

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: 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

Mehr

Programmieren - C++ Templates

Programmieren - C++ Templates Programmieren - C++ Templates Reiner Nitsch r.nitsch@fbi.h-da.de Was sind Templates? C++ Templates ermöglichen generische Programmierung. Das ist Programmierung unabhängig vom speziellen Objekt-Typ Templates

Mehr

Programmierkurs C++ Templates & STL (1/2)

Programmierkurs C++ Templates & STL (1/2) Programmierkurs C++ Templates & STL (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Templates Die wichtigsten objekt-orientierten

Mehr

4. Sortieren 4.1 Vorbemerkungen

4. 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

Mehr

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

14. 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

Mehr

1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...

1. 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

Mehr

Prüfung Algorithmen und Datenstrukturen I

Prü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

Mehr

Einführung in die STL anhand eines ausgewählten Beispiels

Einführung in die STL anhand eines ausgewählten Beispiels Einführung in die STL anhand eines ausgewählten Beispiels Frank M. Thiesing http://home.t-online.de/home/ frank.thiesing/stl/stl-folien.pdf Inhalt Überblick über die C++ STL Container Iteratoren Algorithmen

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Einführung in die Programmierung Wintersemester 2018/19

Einführung in die Programmierung Wintersemester 2018/19 Einführung in die Programmierung Wintersemester 2018/19 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : STL Inhalt Überblick über die Standard Template

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

8. 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. 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.

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 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

Mehr

Kap. 3: Sortieren (3)

Kap. 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

Einführung in die STL

Einführung in die STL 1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung

Mehr

Mapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24.

Mapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24. Mapra: C++ Teil 4 Felix Gruber, Michael Rom IGPM 24. Mai 2016 Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24. Mai 2016 1 / 25 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien

Mehr

C++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13

C++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13 C++ Teil 7 Sven Groß 30. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 30. Nov 2015 1 / 13 Themen der letzten Vorlesung Zeiger, Felder (Wdh.) dynamische Speicherverwaltung Sven Groß (IGPM, RWTH Aachen)

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Untere Schranken für Sortieren Sortieren mit linearem Aufwand Mediane und Ranggrössen 2 Wie schnell können wir sortieren?

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren

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

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,

Mehr

Algorithmen und Datenstrukturen 12

Algorithmen und Datenstrukturen 12 12. Juli 2012 1 Besprechung Blatt 11 Fragen 2 Binary Search Binäre Suche in Arrays Binäre Suchbäume (Binary Search Tree) 3 Sortierverfahren Allgemein Heapsort Bubblesort Insertionsort Mergesort Quicksort

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

5. Strukturen und Algorithmen

5. Strukturen und Algorithmen 5. Strukturen und Algorithmen Struktur 5.1 Modellierung allgemein Element Kabel1 Lampe Kabel2 Objekte der Struktur Struktur -> Klasse Element -> Klasse Datenstruktur Dr. Norbert Spangler / Grundlagen der

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 018/19 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I - 4 Heute: Wir bauen eine Datenstruktur Datenstruktur: Konzept,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Algorithmen I - Tutorium 28 Nr. 3

Algorithmen I - Tutorium 28 Nr. 3 Algorithmen I - Tutorium 28 Nr. 3 18.05.2016: Spaß mit Listen, Arrays und amortisierter Analyse Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN

Mehr

Programmier-Befehle - Woche 9

Programmier-Befehle - Woche 9 Zeiger und Iteratoren Zeiger (auf Array) Iterieren über ein Array Diese Befehle gelten zusätzlich zu denen unter Zeiger (generell) (siehe Summary 8), falls Zeiger auf einem Array verwendet werden. Wichtige

Mehr

13 Reguläre Ausdrücke

13 Reguläre Ausdrücke 13 Reguläre Ausdrücke 13.1 Übungsaufgabe 13.1.1 Aufgabe 1 Schreiben Sie ein C++ Programm, das eine txt-datei (UTF8 kodiert) öffnet und mit wcin alle Wörter einliest, Punktuationszeichen am Anfang und Ende

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Grundlagen der Informatik 6. Arrays I

Grundlagen der Informatik 6. Arrays I 6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt

Mehr

Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11

Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11 Mapra: C++ Teil 2 Felix Gruber, Sven Groß IGPM 2. Mai 2017 Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 1 / 11 Themen vom letzten Mal Kontrollstrukturen Funktionen const Referenzen Zeiger

Mehr

INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt.

INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt. Aufgabe 1 INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt. QUICK-SORT: Hängt davon ab ob PARTITION stabil ist. MERGE-SORT: Ja, Splitten, sowie Mergen ist stabil.

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 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

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Übungsklausur Algorithmen I

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Übungsklausur Algorithmen I Vorname: Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Jörn Müller-Quade 21.06.2017 Übungsklausur Algorithmen I Aufgabe 1. Kleinaufgaben 8 Punkte Aufgabe 2. Hashing 6 Punkte

Mehr

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert 4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand

Mehr

Informatik II Übung 10. Benjamin Hepp 10 May 2017

Informatik II Übung 10. Benjamin Hepp 10 May 2017 Informatik II Übung 10 Benjamin Hepp benjamin.hepp@inf.ethz.ch 10 May 2017 Nachbesprechung U9 10 May 2017 Informatik II - Übung 01 2 Nachbesprechung U9 1. Spieltheorie 2. Reversi Teil 3 (Vorbesprechung

Mehr

9. Natürliche Suchbäume

9. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

Mehr