Princeton University

Algorithmen, Teil I

Unterrichtet auf Englisch

Einige Inhalte können nicht übersetzt werden

1.327.825 bereits angemeldet

Kurs

Informieren Sie sich über ein Thema und erlernen Sie die Grundlagen.

Kevin Wayne
Robert Sedgewick

Dozenten: Kevin Wayne

4.9

(11,334 Bewertungen)

Stufe Mittel
Einige einschlägige Kenntnisse erforderlich
Es dauert 54 Stunden
3 Wochen bei 18 Stunden pro Woche
Flexibler Zeitplan
In Ihrem eigenen Lerntempo lernen

Kompetenzen, die Sie erwerben

  • Kategorie: Datenstruktur
  • Kategorie: Algorithmen
  • Kategorie: Java Programmierung

Wichtige Details

Bewertungen

10 Quizzes

Erfahren Sie, wie Mitarbeiter führender Unternehmen gefragte Kompetenzen erwerben.

Platzhalter

In diesem Kurs gibt es 13 Module

Willkommen bei Algorithmen, Teil I.

Das ist alles enthalten

1 Video2 Lektüren1 Programmieraufgabe

Wir veranschaulichen unseren grundlegenden Ansatz zur Entwicklung und Analyse von Algorithmen anhand des Problems der dynamischen Konnektivität. Wir stellen den Datentyp union-find vor und betrachten verschiedene Implementierungen (quick find, quick union, weighted quick union und weighted quick union mit Pfadkompression). Schließlich wenden wir den Datentyp union-find auf das Perkolationsproblem aus der physikalischen Chemie an.

Das ist alles enthalten

5 Videos2 Lektüren1 Quiz1 Programmieraufgabe

Die Grundlage unseres Ansatzes zur Analyse der Leistung von Algorithmen ist die wissenschaftliche Methode. Wir beginnen mit der Durchführung von Computerexperimenten, um die Laufzeiten unserer Programme zu messen. Wir verwenden diese Messungen, um Hypothesen über die Leistung zu entwickeln. Als nächstes erstellen wir mathematische Modelle, um ihr Verhalten zu erklären. Schließlich analysieren wir die Speichernutzung unserer Java-Programme.

Das ist alles enthalten

6 Videos1 Lektüre1 Quiz

Wir betrachten zwei grundlegende Datentypen für die Speicherung von Sammlungen von Objekten: den Stapel und die Warteschlange. Wir implementieren beide entweder mit einer einfach verketteten Liste oder einem Array mit Größenänderung. Wir stellen zwei fortschrittliche Java-Funktionen vor - Generics und Iteratoren - die den Client-Code vereinfachen. Schließlich betrachten wir verschiedene Anwendungen von Stapeln und Warteschlangen, die vom Parsen arithmetischer Ausdrücke bis zur Simulation von Warteschlangensystemen reichen.

Das ist alles enthalten

6 Videos2 Lektüren1 Quiz1 Programmieraufgabe

Wir stellen das Sortierproblem und die Schnittstelle Comparable von Java vor. Wir untersuchen zwei elementare Sortiermethoden (Auswahlsortierung und Einfügesortierung) und eine Variation einer dieser Methoden (Shellsort). Wir betrachten auch zwei Algorithmen zum gleichmäßigen Mischen eines Arrays. Wir schließen mit einer Anwendung des Sortierens zur Berechnung der konvexen Hülle über den Graham-Scan-Algorithmus.

Das ist alles enthalten

6 Videos1 Lektüre1 Quiz

Wir untersuchen den Mergesort-Algorithmus und zeigen, dass er garantiert jedes Array mit n Elementen mit höchstens n lg n Vergleichen sortiert. Wir betrachten auch eine nicht-rekursive Bottom-Up-Version. Wir beweisen, dass jeder auf Vergleichen basierende Sortieralgorithmus im schlimmsten Fall mindestens n lg n Vergleiche durchführen muss. Wir diskutieren die Verwendung verschiedener Ordnungen für die Objekte, die wir sortieren, und das damit verbundene Konzept der Stabilität.

Das ist alles enthalten

5 Videos2 Lektüren1 Quiz1 Programmieraufgabe

Wir führen den randomisierten Quicksort-Algorithmus ein, implementieren ihn und analysieren seine Leistung. Wir betrachten auch randomized quickselect, eine Variante von quicksort, die das k-te kleinste Element in linearer Zeit findet. Schließlich betrachten wir 3-Wege-Quicksort, eine Variante von Quicksort, die besonders gut bei Vorhandensein von doppelten Schlüsseln funktioniert.

Das ist alles enthalten

4 Videos1 Lektüre1 Quiz

Wir stellen den Datentyp Prioritätswarteschlange und eine effiziente Implementierung unter Verwendung der binären Heap-Datenstruktur vor. Diese Implementierung führt auch zu einem effizienten Sortieralgorithmus, der als Heapsort bekannt ist. Wir schließen mit einer Anwendung von Prioritätswarteschlangen, bei der wir die Bewegung von n Teilchen simulieren, die den Gesetzen der elastischen Kollision unterliegen.

Das ist alles enthalten

4 Videos2 Lektüren1 Quiz1 Programmieraufgabe

Wir definieren eine API für Symboltabellen (auch bekannt als assoziative Arrays, Maps oder Dictionaries) und beschreiben zwei elementare Implementierungen mit einem sortierten Array (binäre Suche) und einer ungeordneten Liste (sequentielle Suche). Wenn die Schlüssel vergleichbar sind, definieren wir eine erweiterte API, die die zusätzlichen Methoden min, max, floor, ceiling, rank und select enthält. Um eine effiziente Implementierung dieser API zu entwickeln, untersuchen wir die binäre Suchbaum-Datenstruktur und analysieren ihre Leistung.

Das ist alles enthalten

6 Videos1 Lektüre1 Quiz

In dieser Vorlesung ist es unser Ziel, eine Symboltabelle mit garantierter logarithmischer Leistung für Suchen und Einfügen (und viele andere Operationen) zu entwickeln. Wir beginnen mit 2-3 Bäumen, die leicht zu analysieren, aber schwer zu implementieren sind. Als nächstes betrachten wir rot-schwarze binäre Suchbäume, die wir als eine neuartige Möglichkeit ansehen, 2-3 Bäume als binäre Suchbäume zu implementieren. Schließlich stellen wir B-Bäume vor, eine Verallgemeinerung von 2-3 Bäumen, die häufig zur Implementierung von Dateisystemen verwendet werden.

Das ist alles enthalten

3 Videos2 Lektüren1 Quiz

Wir beginnen mit der 1d- und 2d-Bereichssuche, bei der das Ziel darin besteht, alle Punkte in einem bestimmten 1d- oder 2d-Intervall zu finden. Um dies zu erreichen, betrachten wir kd-Bäume, eine natürliche Verallgemeinerung von BSTs, wenn die Schlüssel Punkte in der Ebene (oder höheren Dimensionen) sind. Wir betrachten auch Schnittpunktprobleme, bei denen das Ziel darin besteht, alle Schnittpunkte zwischen einer Menge von Liniensegmenten oder Rechtecken zu finden.

Das ist alles enthalten

5 Videos1 Lektüre1 Programmieraufgabe

Wir beginnen mit einer Beschreibung der wünschenswerten Eigenschaften von Hash-Funktionen und ihrer Implementierung in Java, einschließlich eines grundlegenden Grundsatzes, der als einheitliche Hash-Annahme bekannt ist und die Grundlage für den potenziellen Erfolg einer Hash-Anwendung bildet. Anschließend betrachten wir zwei Strategien für die Implementierung von Hash-Tabellen - getrennte Verkettung und lineares Probing. Beide Strategien liefern eine zeitlich konstante Leistung für das Suchen und Einfügen unter der Annahme eines einheitlichen Hashings.

Das ist alles enthalten

4 Videos2 Lektüren1 Quiz

Wir betrachten verschiedene Anwendungen von Symboltabellen, darunter Sets, Wörterbuch-Clients, Indexierungs-Clients und spärliche Vektoren.

Das ist alles enthalten

4 Videos1 Lektüre

Dozenten

Lehrkraftbewertungen
4.8 (1,777 Bewertungen)
Kevin Wayne
Princeton University
5 Kurse1.782.345 Lernende
Robert Sedgewick
Princeton University
7 Kurse1.827.324 Lernende

von

Empfohlen, wenn Sie sich für Algorithmen interessieren

Warum entscheiden sich Menschen für Coursera für ihre Karriere?

Felipe M.
Lernender seit 2018
„Es ist eine großartige Erfahrung, in meinem eigenen Tempo zu lernen. Ich kann lernen, wenn ich Zeit und Nerven dazu habe.“
Jennifer J.
Lernender seit 2020
„Bei einem spannenden neuen Projekt konnte ich die neuen Kenntnisse und Kompetenzen aus den Kursen direkt bei der Arbeit anwenden.“
Larry W.
Lernender seit 2021
„Wenn mir Kurse zu Themen fehlen, die meine Universität nicht anbietet, ist Coursera mit die beste Alternative.“
Chaitanya A.
„Man lernt nicht nur, um bei der Arbeit besser zu werden. Es geht noch um viel mehr. Bei Coursera kann ich ohne Grenzen lernen.“

Bewertungen von Lernenden

Zeigt 3 von 11334

4.9

11.334 Bewertungen

  • 5 stars

    89,41 %

  • 4 stars

    8,67 %

  • 3 stars

    1,08 %

  • 2 stars

    0,25 %

  • 1 star

    0,57 %

HM
5

Geprüft am 9. Mai 2019

VP
5

Geprüft am 8. Okt. 2021

RB
4

Geprüft am 31. Mai 2020

Platzhalter

Neue Karrieremöglichkeiten mit Coursera Plus

Unbegrenzter Zugang zu über 7.000 erstklassigen Kursen, praktischen Projekten und Zertifikatsprogrammen, die Sie auf den Beruf vorbereiten – alles in Ihrem Abonnement enthalten

Bringen Sie Ihre Karriere mit einem Online-Abschluss voran.

Erwerben Sie einen Abschluss von erstklassigen Universitäten – 100 % online

Schließen Sie sich mehr als 3.400 Unternehmen in aller Welt an, die sich für Coursera for Business entschieden haben.

Schulen Sie Ihre Mitarbeiter*innen, um sich in der digitalen Wirtschaft zu behaupten.

Häufig gestellte Fragen