<-- Studium
Im Zuge der AlgoDat-Vorlesung waren 6 Uebungsaufgaben unterschiedlichen Schwierigkeidsgrads zu loesen (von "C-Buch Seite 2" bis zu "Ich verstehe nach mehreren Stunden nicht mal die Aufgabenstellung"). Hier also meine, teilweise sogar gelobten, Loesungen dazu:
EU Personalausweis
Dateien
Verkettete Listen
Baeume
Sortieren
Hashing
Aufgabenstellung
Loesung
Anmerkungen:
- Die Berechnungsmethode ist im Vergleich zu meinem ersten Ausweis-Programm leicht abgewandelt (besser)
- Fuck Yeah GoTo :-p Man kann es tatsaechlich halbwegs sinnvoll einsetzen
- Der eigentliche Algorithmus ist, wie in dieser AlgoDat-Veranstaltung ueblich, nur 5% des Quellcodes. Der Rest sind Checks und char[]-"String"-Operationen
- Mit Funktionsprototypen waers wohl doch uebersichtlicher, faellt mir zumindest jetzt beim Onlinifizieren so auf
Aufgabenstellung
In dieser Aufgabe sollten ASCII- und Binaerdateien jeweils in JAVA und C eingelesen und geschrieben werden.
Loesungen: C JAVA
Aufgabenstellung
Hier wurde eine doppelt verkettete Liste implementiert, inklusive lustiger Zusatzfunktionen wie Zyklisch/Azyklisch Umschaltung. Zur Abwechslung mal in C++, malloc() war mir dann doch zu doof ;-)
Loesungen: Hauptprogramm Listenelement-Klasse Header zur Klasse
Diagramme zu den einzelnen Operationen:
Neues Listenelement zwischen anderen Listenelementen einfuegen
Element zwischen anderen Elementen loeschen
Element am Anfang der zyklischen Liste einfuegen
Element am Ende der zyklischen Liste einfuegen
Aufgabenstellung
- Quasiausgeglichener, beliebig geordneter Baum
- Mehr so zum warmwerden, wenn man rausgefunden hat was mit "quasiausgeglichen" gemeint ist auch gar nicht so schwer. Main Tree-Klasse
- Binaerer Suchbaum
- Hier gehts richtig zur Sache, wurde am Ende auch richtig komplex. Main Tree-Klasse
Aufgabenstellung
Implementiert die folgenden Sortieralgorithmen und vergleicht deren Laufzeit:
- Insertion
- Selection
- Bubble (mit und ohne Merker)
- Shell
- Heap
- Quick
- Merge
Mal wieder in plain C, hat uebrigens den Java-Kram vom Knuspermagier teilweise um ueber 50% abgehaengt: sortAlgos.c sortAlgos.h sortComp.c
Heraus kommt dann sowas:
No. of keys ascending random descending
25000 [ms] [ms] [ms]
-----------------------------------------------------------
Insertion-Sort 1 2674 5352
Selection-Sort 3124 3160 3512
Bubble-Sort 3385 6141 7437
Bubble-Sort (M) 0 9753 11046
No. of keys ascending random descending
25000 [ms] [ms] [ms]
-----------------------------------------------------------
Shell-Sort 6 21 10
Heap-Sort 14 15 13
Quick-Sort 4 6 3
Merge-Sort 13 13 11
Ja, Quick-Sort ist echt quick :-)
Aufgabenstellung (Achtung: Hoher WTF-Faktor!)
Fuer die Korrektheit und den Sinn der hier produzierten Hashes kann ich leider keine Verantwortung uebernehmen. Jedenfalls entsprach das Ergebnis am Ende wohl dem gewuenschten und wurde abgenommen: Hashing-Pack
Graphische Aufbereitung der Untersuchung: