Sortieren. Maple sortiert; Unordnung schaffen. > restart;
|
|
- Sabine Kraus
- vor 7 Jahren
- Abrufe
Transkript
1 restart; Sortieren Maple sortiert; Unordnung schaffen Vorbemerkung: Maple kann schon selber sortieren. Dazu erzeugen wir erstmal eine unsortierte Liste: > r := rand(1..100): > l := [seq(r(), i=1..10)]; l := [ 82, 71, 98, 64, 77, 39, 86, 69, 22, 10] Die Funktion sort sortiert eine Liste: > sort(l); [ 10, 22, 39, 64, 69, 71, 77, 82, 86, 98] Für kompliziertere Fälle kann man auch eine eigene Vergleichsfunktion bauen. Hier etwa, um zweielementige Listen nach ihrem zweiten Element zu sortieren: > l := [seq([i,r()],i=1..10)]; > sort(l, (x,y)->x[2]<y[2]); l := [[ 156, ], [ 264, ], [ 358, ],[ 461, ],[ 575, ],[ 686, ],[ 717, ],[ 862, ],[ 98, ],[ 10, 50] ] [[ 98, ], [ 717, ], [ 10, 50 ], [ 156, ],[ 358, ],[ 461, ],[ 862, ],[ 264, ],[ 575, ],[ 686, ]] Das nutzen wir aus, um uns Testfälle zu erzeugen mittels einer Funktion, die eine "zufällige" Permutation der Zahlen 1..n liefert - z.b. [9,6,1,10,8,7,4,2,5,3]: > unsortiert := proc(n) local l; l := [seq([i,r()],i=1..n)]; # Sortieren nach der zweiten Komponente der l[i] l := sort(l, (x,y)->x[2]<y[2]); # Jetzt brauchen wir nur noch die ersten Komponenten der l[i] [seq(x[1],x=l)] unsortiert := proc( n) local l; l := [ seq ([ i, r ()], i = 1.. n )]; l := sort ( l, ( x, y ) x[ 2 ] < y[ 2 ]); [ seq ( x[ 1 ], x = l) ] > unsortiert(10); [ ,,,, > sort(%); 78910,,,, Eine andere Möglichkeit, dieselbe Aufgabe zu lösen: wir fangen mit der sortierten Liste l = [1,...,n] an und vertauschen für i=1..n-1 die Komponente l[i] mit einem zufällig ausgewählten l[j], j=i,...,n: > unsortiert2 := proc(n) local l,i,j,h; # option trace;
2 l := [seq(i, i=1..n)]; for i from 1 to n-1 do # für Position i Tauschindex j aus i..n auswählen j := i + (rand() mod (n+1-i)); # und vertauschen h := l[i]; l[i] := l[j]; l[j] := h end do; l unsortiert2 := proc( n) local l, i, j, h; l := [ seq ( i, i = 1.. n )]; for i to n 1 do j := i + ( rand () mod ( n + 1 i )); h := li [ ]; li [ ]:= lj [ ]; lj [ ]:= h end do; l > unsortiert2(10); [ ,,,, first und rest Wir werden (obwohl das sehr ineffizient ist) hier mit Listen arbeiten. Damit sich das besser liest, verwenden wir wieder die Hilfsfunktionen aus der Übung voriger Woche (Rösselsprung): Die Funktion first liefert das erste Element einer Liste: > first := l -> l[1]; first := l l 1 Die Funktion rest liefert den Rest (alle Elemente außer dem ersten) einer Liste (-1 ist der Index des letzten Elements): > rest := l -> l[2..-1]; Ein Test: > first([1,2,3]); > rest([1,2,3]); rest := l l [ 23, ] Beim Testen auch an die Grenzfälle denken! > first([1]); > rest([1]); 1 [] > first([]);
3 > > rest([]); Error, (in first) invalid subscript selector Error, (in rest) invalid subscript selector Wir hätten also oben schreiben müssen "... liefert... einer nichtleeren Liste...". Wir müssen bei der Verwendung dieser Funktionen drauf achten! > Erweitertes append Die Funktion append soll zwei Listen aneinanderhängen. Gegenüber letzter Woche haben wir nun einen Sonderwunsch: Dinge, die keine Liste sind, sollen als einelementige Listen behandelt werden. > append := proc(l1, l2) local s1, s2; if type(l1, list) then s1 := op(l1) s1 := l1 ; if type(l2, list) then s2 := op(l2) s2 := l2 ; [s1, s2] append := proc( l1, l2) local s1, s2; if type ( l1, list ) then s1 := op( l1 ) s1 := l1 ; if type ( l2, list ) then s2 := op( l2 ) s2 := l2 ; [ s1, s2 ] > append([1,2,3],[4,5,6]); > append(1, [2,3]); [ 123,, ] > append([1,2],3); [ 123,, ] > append(1,2); [ 12, ] Die leere Liste macht hier ausnahmsweise keine Probleme: > append(append([],[1,2]),[]); [ 12, ] Mischen Hier kommt die Prozedur merge, mit zwei sortierten Listen l1in und l2in als Parameter und der zusammengeführten sortierten Liste als Ergebnis. Vorsicht: die Listen, die wir als Aktualparameter bekommen, werden im Verlauf der Prozedur verändert, wir müssen also Kopien l1 von l1in und l2 von l2in herstellen. > merge := proc(l1in, l2in)
4 local l1, l2, s, x1, x2; s := []; l1 := l1in; l2 := l2in; while nops(l1)>0 or nops(l2)>0 do if nops(l2)>0 then if nops(l1)>0 then x1 := first(l1); x2 := first(l2); if x1<x2 then s := append(s, x1); l1 := rest(l1) s := append(s, x2); l2 := rest(l2) # l1 ist leer s := append(s, l2); l2 := [] # l2 ist leer s := append(s, l1); l1 := [] end do; return s merge := proc( l1in, l2in) local l1, l2, s, x1, x2; s := []; l1 := l1in; l2 := l2in; while 0 < nops( l1 ) or 0 < nops( l2 ) do if 0 < nops( l2 ) then if 0 < nops( l1 ) then x1 := first( l1 ); x2 := first( l2 ); if x1 < x2 then s := append ( s, x1 ); l1 := rest( l1 ) s := append ( s, x2 ); l2 := rest( l2 ) s := append ( s, l2 ); l2 := [] s := append ( s, l1 ); l1 := []
5 end do; return s > merge([1,2,3],[4,5,6]); > merge([4,5,6],[1,2,3]); > merge([1,3,5,7],[0,2,4]); [ , Um die Funktion besser zu verstehen, blockieren wir zwischendurch die Funktion append: > append_tmp := eval(append): > append := 'append': Jetzt die Beispiele wiederholen, dann append wieder aktivieren: > append := eval(append_tmp): Mischen: rekursive Variante Hier noch eine rekursive Lösung für das gleiche Problem: > merge_rek := proc(l1, l2) if l1=[] then l2 elif l2=[] then l1 elif first(l1)<first(l2) then append(first(l1), merge_rek(rest(l1), l2)) append(first(l2), merge_rek(l1, rest(l2))) merge_rek := proc( l1, l2) if l1 = [] then l2 elif l2 = [] then l1 elif first( l1 ) < first( l2 ) then append ( first( l1 ), merge_rek ( rest( l1), l2 )) append ( first( l2 ), merge_rek ( l1, rest( l2 ))) > merge_rek([1,2,3],[4,5,6]); > merge_rek([4,5,6],[1,2,3]); > merge_rek([1,3,5,7],[0,2,4]); [ ,
6 Auch hier lohnt sich das Experiment mit dem blockierten append: > append_tmp := eval(append): > append := 'append': Jetzt die Beispiele wiederholen, dann append wieder aktivieren: > append := eval(append_tmp): Diese Variante lässt sich auch in der funktionalen Notation hinschreiben: > merge_rek_f := (l1,l2) -> `if`(l1=[], l2, `if`(l2=[], l1, `if`(first(l1)<first(l2), append(first(l1), merge_rek_f(rest(l1), l2)), append(first(l2), merge_rek_f(l1, rest(l2))) ) ) ); merge_rek_f := ( l1, l2 ) `if` ( l1 = []l2,, `if` ( l2 = []l1,, `if` ( first( l1 ) < first( l2 ), append ( first( l1 ), merge_rek_f ( rest( l1 ), l2 )), append ( first( l2 ), merge_rek_f ( l1, rest( l2 ))) ))) > merge_rek_f([1,2,3],[4,5,6]); > merge_rek_f([4,5,6],[1,2,3]); > merge_rek_f([1,3,5,7],[0,2,4]); [ , Mergesort Wer mischen kann, kann auch sortieren: > mergesort := proc(l) local n,mitte; n := nops(l); if n=1 then l mitte := round(n/2); merge(mergesort(l[1..mitte]), mergesort(l[mitte+1..-1])) mergesort := proc( l) local n, mitte; n := nops( l ); if n = 1 then l
7 mitte := round( 1 / 2 n ); merge ( mergesort ( l [ 1.. mitte ]), mergesort ( l [ mitte ])) Es scheint zu funktionieren: > mergesort(unsortiert(100)); ,,,,,,,,,,,,,,,,,,,,,,,,,,, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100] Mehr Einsicht in den Ablauf des Programms bekommt man, indem man diesmal merge blockiert: > merge_tmp := eval(merge): > merge := 'merge'; merge := merge > mergesort([seq(i,i=1..7)]); merge ( merge ( merge ([ 1 ], [ 2 ]), merge ([ 3 ], [ 4 ])), merge ( merge ([ 5 ], [ 6 ]), [ 7] )) > merge := eval(merge_tmp): Zeitmessung Sehen wir noch nach, wie lange wir eigentlich zum Sortieren brauchen. Die Funktion time misst die Zeit, die für die Auswertung ihres Parameters benötigt wird (in Sekunden): > time(mergesort(unsortiert(2^5))); Für eine bessere Messung führen wir das Sortieren (ohne Sinn und Verstand) öfter aus: > mergesort_m := proc(l,m) local i; for i to m do mergesort(l) end do mergesort_m := proc( l, m) local i; for i to m do mergesort( l) end do Eine Beispielliste: > l := unsortiert(1000): Wenigstens in etwa wächst die Zeit proportional zur Zahl der Sortiervorgänge: > time(mergesort_m(l,1)); > time(mergesort_m(l,10))/10; > time(mergesort_m(l,50))/50; Jetzt probieren wir das für verschieden lange Listen (100 Wiederholungen):
8 > > > for k to 10 do l := unsortiert(2^k); print([2^k,time(mergesort_m(l,100))/100]) end do: [ 2, ] [ 4, ] [ 8, ] [ 16, ] [ 32, ] [ 64, ] [ 128, ] [ 256, ] [ 512, ] [ 1024, ] Der positive Aspekt ist, dass die Zeiten bei Verdoppeln der Länge nicht um einen Faktor 4 (wie bei n 2 ) steigen, sondern nur wenig mehr als um einen Faktor 2. Der direkte Vergleich mit der Konkurrenz ist allerdings deprimierend: > sort_m := proc(l,m) local i; for i to m do sort(l) end do sort_m := proc( l, m) local i; for i to m do sort( l ) end do > for k to 10 do l := unsortiert(2^k); print([2^k,time(sort_m(l,100))/100]) end do: [ 20., ] [ 40., ] [ 80., ] [ 16, 0. ] [ 32, 0. ] [ 64, 0. ] [ 128, ] [ 256, ] [ 512, ] [ 1024, ]
Einführung in die Programmierung I. 6. Sortieren. Stefan Zimmer
Einführung in die Programmierung I 6. Sortieren Stefan Zimmer 26.11.2007 2 Sortieren Gegeben seien n Dinge ai, 1 i n, und eine Vergleichsoperation (z.b. Zahlen und
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
MehrKurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.
Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom 15.08.98 Seite 1 Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. August 1998 Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur
MehrProgrammieren I. Kapitel 7. Sortieren und Suchen
Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren
MehrModellbildung und Simulation SS2011 Lineare Iterationsverfahren
restart; with(plots): with(linearalgebra): Modellbildung und Simulation SS2 Lineare Iterationsverfahren Hilfsfunktionen: Bilder malen bild malt einen Vektor als stueckweise lineare Funktion ueber dem Einheitsintervall.
MehrAbschnitt: Algorithmendesign und Laufzeitanalyse
Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher
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
MehrBash-Skripting Linux-Kurs der Unix-AG
Bash-Skripting Linux-Kurs der Unix-AG Sebastian Weber 07.01.2013 Was ist ein Bash-Skript? Skript muss mit chmod +x ausführbar gemacht sein Aneinanderreihung von Befehlen normale Befehle nutzbar Sebastian
MehrTypdeklarationen. Es gibt in Haskell bereits primitive Typen:
Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,
MehrUE 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
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
MehrÜbung Algorithmen I
Übung Algorithmen I 20.5.15 Christoph Striecks Christoph.Striecks@kit.edu (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Organisation Mergesort, Quicksort Dual Pivot Quicksort
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
MehrRekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die
MehrRekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die
MehrTECHNISCHE UNIVERSITÄT MÜNCHEN. Abgabe: (vor der Vorlesung)
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Übungsblatt 6 Prof. Dr. Helmut Seidl, T. M. Gawlitza,
MehrExponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element
Problemstellung Banale smethode : das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element a n = } a a a {{ a } H n (schreiben ab jetzt a n statt a n ) Hinweis:
MehrBerechnungsschemata: Funktion als Parameter abstrahiert Operation im Schema, wird bei Aufruf des Schemas konkretisiert
6. Funktionen als Daten, Übersicht Orthogonales Typsystem: Funktionen sind beliebig mit anderen Typen kombinierbar Notation für Funktionswerte (Lambda-Ausdruck): fn (z,k) => z*k Datenstrukturen mit Funktionen
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 4 (7.5.2014) Asymptotische Analyse, Sortieren IV Algorithmen und Komplexität Erfahrungen 1. Übung C++ / Java sind komplett ungewohnt Struktur
MehrCollatz-Folge. falls a i ungerade.
14 Klausurtraining Heute gibt s nichts Neues mehr wir machen nochmal einen Streifzug durch die behandelten Themen unter besonderer Berücksichtigung von Aufgaben in der Art, wie sie in Klausuraufgaben vorzukommen
MehrSortieren 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Ü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
MehrAlgorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
MehrKlausur Programmierung WS 2002/03
Klausur Programmierung WS 2002/03 Prof. Dr. Gert Smolka, Dipl. Inf. Thorsten Brunklaus 14. Dezember 2002 Leo Schlau 45 Vor- und Nachname Sitz-Nr. 4711 007 Matrikelnummer Code Bitte öffnen Sie das Klausurheft
MehrSuchen und Sortieren
Ideen und Konzepte der Informatik Suchen und Sortieren Ordnung ist das halbe Leben Antonios Antoniadis (Basierend auf Folien von Kurt Mehlhorn und Konstantinos Panagiotou) 6. November 2017 6. November
MehrBash-Skripting Linux-Kurs der Unix-AG
Bash-Skripting Linux-Kurs der Unix-AG Sebastian Weber 13.06.2012 Was ist ein Bash-Skript? Skript muss mit chmod +x ausführbar gemacht sein Aneinanderreihung von Befehlen normale Befehle nutzbar Sebastian
MehrAlgorithmen und Datenstrukturen I
Algorithmen und Datenstrukturen I Sortierverfahren D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Winter 2009/10, 18. Januar 2010,
MehrProgrammiertechnik II
2007 Martin v. Löwis Sortieren: Quicksort und Mergesort Charles Antony Richard Hoare 2007 Martin v. Löwis Geboren 11. 1. 1934 in Colombo (Sri Lanka) Studium in Oxford (Philosophie, Latein, Griechisch)
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
MehrMaple-Praktikum für Lehramt Blatt 1 Dieses Blatt wird in Kalenderwoche 16 (ab 16. April) testiert.
Maple-Praktikum für Lehramt 2018 - Blatt 1 Dieses Blatt wird in Kalenderwoche 16 (ab 16. April) testiert. Aufgaben: 5 > restart; Herzlich willkommen im Maple-Praktikum für Lehramt! Sie erhalten jede Woche
MehrQuicksort ist ein Divide-and-Conquer-Verfahren.
. Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.
MehrErinnerung VL vom
Erinnerung VL vom 09.05.2016 Analyse von Hashtabellen mit verketteten Listen Erwartete Laufzeit O(1) bei zuf. Hashfkt. und falls M O(m) Guter Ersatz (hier) für zuf. Hashfkt.: universelle Hashfunktionen
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrAlgorithmen 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
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
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
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
MehrProgrammieren lernen mit Groovy Kollektionen: Listen und Abbildungen
Programmieren lernen mit Groovy Kollektionen: Listen und Abbildungen Seite 1 Listen Listen Definition def Listen-Variable = Listen-Wert def liste = [1,2,3,4,5,6,7,8,9] Der erste Index ist 0! liste[0] Zugriff
MehrSoftwareprojektpraktikum Maschinelle Übersetzung
Softwareprojektpraktikum Maschinelle Übersetzung Jan-Thorsten Peter, Andreas Guta, Jan Rosendahl max.bleu@i6.informatik.rwth-aachen.de Vorbesprechung 5. Aufgabe 22. Juni 2017 Human Language Technology
MehrKap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!
Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO
MehrÜbung Algorithmen I
Übung Algorithmen I 18.5.16 Lukas Barth lukas.barth@kit.edu (Mit Folien von Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Sortieren Kleine Wiederholung Visualisierungen Adaptives
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Große Übung #6 Phillip Keldenich, Arne Schmidt 26.02.2017 Heute: Master-Theorem Phillip Keldenich, Arne Schmidt Große Übung 2 Vorbetrachtungen Wir betrachten rekursive Gleichungen
MehrKap 7. Funktionen und Arrays
Kap 7. Funktionen und Arrays Elementare Algorithmen Allgemein Mathematik Text Eingabe ٧ Skalarprodukt wie Allgemein Ausgabe ٧ Länge ersetzen Summation Winkel Laenge Maximum ٧ Polynome berechnen ausschneiden
MehrÜbung Algorithmen I
Übung Algorithmen I 24.5.17 Sascha Witt sascha.witt@kit.edu (Mit Folien von Lukas Barth, Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Organisatorisches Übungsklausur Am 21.06.2017
Mehr2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren
2.3 Sortieren 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren 1 Selection-Sort Idee: Suche kleinstes
MehrBUBBLE SORT. Können wir die gefundenen Algorithmen auch auf Listen mit mehr als drei Elementen ausdehnen?
BUBBLE SORT Voraussetzungen der Schüler: Die Schüler besuchen bereits das zweite Jahr den Informatikunterricht und sollten den Umgang mit Feldern und Unterprogrammen mittlerweile beherrschen. Im ersten
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
MehrVorlesung Künstliche Intelligenz Alexander Manecke Oliver Schneider Andreas Stoffel 9. Mai 2006
Vorlesung Künstliche Intelligenz 9. Mai 2006 Aufgabe 1: Listen in Prolog a) Den Fall der leeren Liste müssen wir hier nicht betrachten, denn eine leere Liste besitzt kein Maximum. Also ist Standardantwort
MehrComputer & GNU/Linux Einführung Teil 4
Inst. für Informatik [IFI] Computer & GNU/Linux EinführungTeil 4 Simon Haller, Sebastian Stab 1/20 Computer & GNU/Linux Einführung Teil 4 Simon Haller, Sebastian Stabinger, Benjamin Winder Inst. für Informatik
MehrKonvexe Hülle im R 3 + WSPD
Übung Algorithmische Geometrie Konvexe Hülle im R 3 + WSPD LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Andreas Gemsa 12.07.2012 Ablauf Konvexe Hülle im R 3
MehrProgrammierung in Python
Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P
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
Mehr3.3. Rekursive Datentypen
3.3. Rekursive Datentypen class Element int info; Element naechster;... Element element = new Element(); element.info = 1; element.naechster = new Element(); element.naechster.info = 2; Erläuterung: Objekte
MehrFunktionale Programmierung
Monaden LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 30. April 2009 Monaden Eine Monade ist ein Programmier-Schema für sequentielle Berechnungen. In Haskell
MehrListe: beliebig lange, geordnete Sequenz von Termen. Kopf ist erstes Listenelement, Schwanz die restliche Liste
Listen Liste: beliebig lange, geordnete Sequenz von Termen.(Kopf, Schwanz) Kopf ist erstes Listenelement, Schwanz die restliche Liste leere Liste [] Ende der Liste wird durch [] gekennzeichnet Beispiel:
MehrEinführung in die Handhabung von Maple
> restart; #Löschen aller vorhandenen Daten im Speicher Neustart des Kernels Einführung in die Handhabung von Maple Maple ist ein sehr leistungsfähiges Computeralgebrasystem (CAS) CAS stellt unter einer
MehrBucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.
Bucketsort Beispiel Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt 1 2 A.78.17 0 1 B.12.17 Sonst: Skalieren ( Aufwand O(n) ) 3.39 2.21.23.26 Idee:
MehrFormatierte Ausgabe mit printf printf.mw
Formatierte Ausgabe mit printf printf.mw Syntax: printf( Format, Ausdrucksfolge ). Format gibt an, in welcher Weise MAPLE die Elemente der Ausdrucksfolge schreiben soll und besteht aus Formatierungsspezifikationen.
MehrQuickSort 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
MehrEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 26. Oktober 2006 Haskell - Einführung Syntax Typen Auswertung Programmierung
MehrMergesort. Idee. Die folgende Funktion mergesort sortiert eine Folge a vom unteren Index lo bis zum oberen Index hi.
Sortierverfahren Mergesort Das Sortierverfahren Mergesort erzeugt eine sortierte Folge durch Verschmelzen (engl.: to merge) sortierter Teilstücke. Mit einer Zeitkomplexität von (n log(n)) ist das Verfahren
MehrBash-Scripting Linux-Kurs der Unix-AG
Bash-Scripting Linux-Kurs der Unix-AG Zinching Dang 02. Juli 2013 Was ist ein Bash-Script? Aneinanderreihung von Befehlen, die ausgeführt werden Bedingte und wiederholende Ausführung möglich Nützlich bei
MehrKapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
MehrAlgorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1
MehrAusgewählte Algorithmen: Sortieren von Listen
Kapitel 11: Ausgewählte Algorithmen: Sortieren von Listen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Analyse von Algorithmen: Zeitkomplexität Elementare Sortierverfahren
MehrMathematik AG. Geschickt gesucht ist halb gefunden: Suchen und Sortieren mit Mathe
Mathematik AG Geschickt gesucht ist halb gefunden: Suchen und Sortieren mit Mathe Habe ich die 7? 4 5 1 3 8 6 1 2 7 JA! Habe ich die 7? 4 5 1 3 8 6 1 2 3 NEIN! Unser Problem JA 4 5 1 3 8 6 1 2 7 NEIN 4
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
MehrTECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 3 F. Forster, M.
MehrLaufzeitoptimierung bei der Verknüpfung großer Datenmengen Ein Vergleich zwischen MERGE und JOIN
Poster Laufzeitoptimierung bei der Verknüpfung großer Datenmengen Ein Vergleich zwischen MERGE und JOIN Cerstin Erler Institut für Arbeitsmarkt- und Berufsforschung der Bundesagentur für Arbeit (IAB) Regensburger
Mehr3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.
Das Suchproblem Gegeben Menge von Datensätzen. 3. Suchen Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle Jeder Datensatz hat einen Schlüssel k. Schlüssel sind vergleichbar: eindeutige Antwort auf
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind
MehrÜbungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:
Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls
MehrShell-Scripting Linux-Kurs der Unix-AG
Shell-Scripting Linux-Kurs der Unix-AG Andreas Teuchert 8. Juli 2014 Was ist ein Shell-Script? Aneinanderreihung von Befehlen, die ausgeführt werden Bedingte und wiederholende Ausführung möglich Nützlich
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
MehrÜbersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter
MehrInformatik 1 ( ) D-MAVT F2010. Pointer, Structs, Sortieren. Yves Brise Übungsstunde 6
Informatik 1 (251-0832-00) D-MAVT F2010 Pointer, Structs, Sortieren Aufgabe 1.1 Werden die Variablen später noch gebraucht? for (double d = 13, double e = 0;...) {... Ja... dann e vorher deklarieren. In
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)
Mehr1. Probeklausur (Lösung) zu Programmierung 1 (WS 07/08)
Fachschaft Informatikstudiengänge Fachrichtung 6.2 Informatik Das Team der Bremser 1. Probeklausur (Lösung) zu Programmierung 1 (WS 07/08) http://fsinfo.cs.uni-sb.de Name Matrikelnummer Bitte öffnen Sie
Mehr5. 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
MehrInformatik II Übung 2
Informatik II Übung 2 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 7.3.2013
MehrDatenstrukturen und Algorithmen. 7. Suchen in linearen Feldern
Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische
Mehr2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017
2. Algorithmische Methoden 2.1 Rekursion 18. April 2017 Rekursiver Algorithmus Ein rekursiver Algorithmus löst ein Problem, indem er eine oder mehrere kleinere Instanzen des gleichen Problems löst. Beispiel
MehrDas Suchproblem 4. Suchen Das Auswahlproblem Suche in Array
Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge von Datensätzen. Beispiele
MehrAufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.
Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise
MehrKurs 1613 Einführung in die imperative Programmierung
Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i
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
Mehrajanzen.com Beispiele für den Umgang mit Feldsymbolen
ajanzen.com Beispiele für den Umgang mit Feldsymbolen ajanzen.com 1 Einleitung In dem vorliegenden Dokument möchte ich auf den Umgang mit Feldsymbolen näher eingehen. Dabei geht es nicht um komplexe Erklärungen,
MehrMerge mit nicht eindeutigen by-variablen
News Artikel Foren Projekte Links Über Redscope Join List Random Previous Next Startseite Foren Allgemeine Fragen zu SAS Merge mit nicht eindeutigen by-variablen 28 February, 2006-12:49 Stefanie Rankl
MehrFunktionen in Python
Funktionen in Python Prof. Dr. Rüdiger Weis Beuth Hochschule für Technik Berlin 1 / 31 1 def Anweisung 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente
Mehr2.2 Allgemeine (vergleichsbasierte) Sortierverfahren
. Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen
MehrDie Korrektheit von Mergesort
Die Korrektheit von Mergesort Christoph Lüth 11. November 2002 Definition von Mergesort Die Funktion Mergesort ist wie folgt definiert: msort :: [Int]-> [Int] msort xs length xs
MehrDas Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle
122 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 123 Das Suchproblem Gegeben Menge von Datensätzen.
Mehr11.1 Grundlagen - Denitionen
11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die
MehrAlgorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Spezielle Sortierverfahren Autor: Sven Schuierer
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Spezielle Sortierverfahren Autor: Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden
MehrProgrammierkurs Python I
Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz
MehrWie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?
Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen
MehrRandomisierte Algorithmen 2. Erste Beispiele
Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest
MehrSortieren durch Einfügen (Insertion Sort) fügt die restlichen Elemente nach und nach in die bereits sortierte Liste der abgearbeiteten Zahlen.
Kapitel 6 Sortieren 6.1 Sortiermethoden Die Sortierung von Mengen von Datensätzen ist eine häufige algorithmische Operation auf Mengen bzw. Folgen von gleichartigen Datenobjekten (insbesondere in der betriebswirtschaftlichen
Mehr