====== Algorithmen ====== ===== Über diesen Bereich ===== Dieser Bereich stellt häufig verwendete Algorithmen und Konzepte vor. Implementierungen enthalten dabei oft Dinge, der so in großen Projekten nicht verwendeten werden sollten (globale Variablen, schwer lesbarer Code, ...). Diese Codes dienen lediglich der Darstellung von Konzepten und sind keine Beispiele für guten Programmier-Stil. Weiters kann dadurch auch die Geschwindigkeit bzw. der Speicherverbrauch eines Programms verbessert werden, was in der Algorithmik die Hauptkritikpunkte für ein gutes Programm sind. ===== Techniken ===== * [[recursion|Rekursion]] ===== Sortieralgorithmen ===== ==== Vergleichsbasierte Sortieralgorithmen ==== * [[SelectionSort]] - der naive Sortieralgorithmus * [[BubbleSort]] - ein einfacher Sortieralgorithmus * [[QuickSort]] - ein guter Sortiertalgorithmus ==== Nicht Vergleichsbasierte Sortieralgorithmen ==== * [[CountingSort]] - ein schnellerer Sortieralgorithmus * [[RadixSort]] - Algorithmus zum Sortieren von gleichlangen Zahlen ===== Suchalgorithmen ===== * [[Hashs]] - schnelle Suche über Hash-Tabellen * [[algo:prefix-sum:start|Präfixsumme]] - Optimierung von Bereichsabfragen ===== String-Matching ===== * [[algo:stringmatching:boyer-moore|Boyer-Moore]] (in Bearbeitung -> [[user:Xin:]]) * [[algo:stringmatching:knuth-morris-pratt|Knuth-Morris-Pratt]] ===== Kombinatorische Optimierung ===== * [[algo:knapsack|Das Rucksackproblem]] ===== Verschlüsselung ===== Zum Thema Verschlüsselung gibt es mehr auf [[algo:crypt:start|den folgenden Seiten]]. ===== Beispiele ===== * [[http://www.brg-woergl.tsn.at/Olympiade/|Österreichische Informatik-Olympiade (Trainingsportal)]] * [[http://www.hsin.hr/coci/|Croatian Open Competition in Informatics (COCI)]] * [[http://ace.delos.com/usacogate|USACO (USA Computing Olympiad) Training Program]]