# Algorithmensammlung

Dieses Buch steht im Regal Programmierung.

## Inhalt

Algorithmensammlung: Graphentheorie
   * Algorithmus von Kruskal
   * Algorithmus von Prim
   * Breitensuche (BFS - breadth first search)
   * Dijkstra-Algorithmus
   * Tiefensuche (DFS - depth first search)
Algorithmensammlung: Kalender
   * Feiertage: Ostern, Buß- und Bettag
   * Kalenderwoche
Algorithmensammlung: Numerik
   * Dividierte Differenzen
   * Hermiteinterpolation
   * Horner-Schema
   * Quadratur
   * Gauß-Jordan-Algorithmus
   * Inverse Matrix
   * Determinante
Algorithmensammlung: Sortierverfahren
   * Countingsort
   * Combsort
   * Quicksort
   * Heapsort
   * Selectionsort
   * Mergesort
Algorithmensammlung: Kombinatorik
   * Binomialkoeffizient
Algorithmensammlung: Zahlentheorie
   * Euklidischer Algorithmus
   * Sieb des Eratosthenes
   * Primfaktorisierung
   * Fibonacci-Folge
   * Quadratwurzel mit Rest
   * Goldener Schnitt
   * Signum
Algorithmensammlung: Spezielle Probleme
   * Das Zebrarätsel

## Technisches zum Buch
### Zum Buch

    Dieses Buch soll in Analogie zum Beweisarchiv eine Sammlung von Implementierungen von Algorithmen werden. In der Redaktion Mathematik der deutschsprachigen Wikipedia ist es Konsens, in Artikeln lediglich Pseudocode anzubieten. Gleichzeitig existiert keine Webseite, die ein entsprechendes deutschsprachiges "Kochbuch" anbietet und gleichzeitig die freie Verfügbarkeit und Lizenzierung langfristig garantiert. Die offensichtliche Lücke soll dieses Buch schließen.

### Zielgruppe

    Alle, die auf der Suche nach Implementierungen von Standardalgorithmen sind, insbesondere von der deutschsprachigen Wikipedia aus kommend.

### Lernziele

    Leser sollen gezielt Implementierungen von Algorithmen suchen können.

### Buchpatenschaft/Ansprechperson

    Benutzer:pberndt bzw. Wikipedia:de:Benutzer:pberndt

### Sind Co-Autoren gegenwärtig erwünscht?

    Ausdrücklich! Falls jemand gerne mitarbeiten würde, aber nicht weiß, was zu tun ist, siehe Wie kann ich helfen?.

### Richtlinien für Autoren

    Artikel sollten in einer Gliederungsebene strukturiert werden. Dabei sollten sich Autoren an bestehenden Gliederungspunkten orientieren oder, falls es nichts entsprechendes gibt, eine neue Ebene einfügen. Eine Liste aller Artikel ist hier zu pflegen.
    Jeder Artikel sollte mit einer Kurzzusammenfassung des jeweiligen Algorithmus beginnen
   * Aus welchem Gebiet kommt er?
   * Was genau tut er und wofür verwendet man ihn?
   * Weitere Informationen wie Hinweise auf effizientere Algorithmen sind wünschenswert
   * Pseudocode macht es anderen einfacher, Versionen für weitere Programmiersprachen zu erstellen
    Es folgen Implementierungen des Algorithmus in beliebigen Programmiersprachen. Dabei sollte eine alphabetische Reihenfolge eingehalten werden. Um eine einheitliche Schreibweise zu gewährleisten, sollte eine Liste aller verwendeten Sprachen auf dieser Seite gepflegt werden. Als Richtlinie für Quellcode gilt:
   * Kommentierung nur dort, wo ungewöhnliche Konstrukte verwendet werden oder die Implementierung von der oben auf der Seite beschriebenen abweicht
   * Sprache für Variablen und Kommentare ist Deutsch
   * Verwende Leerzeichen statt Tabs, damit der Code überall gleich aussieht
Ich hoffe auf rege Beteiligung. --Pberndt 20:18, 8. Jul. 2009 (CEST)

### Wie kann ich helfen?

Da dieses Buch nicht geplant wächst, sondern per Definition Wildwuchs betreibt, erwähne ich nochmal das Wikiprinzip: Trau Dich! Bau einfach ein, was Dir fehlt! Die naheliegenste Art, zu helfen, ist genau das. Wenn Du hier her kommst und etwas nicht findest, versuche, es selbst einzubauen. Wenn Du das Thema selbst nicht so perfekt beherrschst, ist das kein Problem. Jemand anderem werden eventuelle Fehler schnell auffallen.
Falls Du mitarbeiten willst, aber nicht weißt, wie: Es gibt zwei wichtige Dinge zu tun.
Erst einmal wäre da das Hinzufügen neuer Algorithmen, die noch gar nicht auftauchen. Listen gibt es zum Beispiel in der Wikipedia unter Liste von Algorithmen. Außerdem gibt es dieses Buch noch in anderen Sprachen, die übersetzt werden können. Siehe links unter Sprachen.
Zweitens gibt es schon existierenden Algorithmen bisher nur in wenigen Sprachen. Für eine Liste aller Sprachen und eine Übersicht darüber, welche Algorithmen es in welchem Sprachen gibt schau mal im Algorithmensammlung Harvester.
Liste von Algorithmen mit Implementierungen: Algorithmensammlung Harvester (Manuell upzudaten)