Buch über Algorithmen und Datenstrukturen
-
Liebe Forenuser,
Ich habe aus reiner Freude mit dem Programmieren begonnen, habe Beruflich nichts damit zu tun und bin Anfänger. Ich kann die C-Grundlagen ganz gut und habe auch schon mit der WinowsAPI herumexperimentiert (insbesondere mit Hooks, da kann man schöne Sache machen, von Scherzprogrammen
hin bis zu Erweiterungen von Fremdprogrammen).
Wie der Titel bereits verrät, suche ich nun ein Buch über Algorithmen/Datenstrukturen um meine Fähigkeiten zu erweitern. Vorkenntnisse über Algorithmen/Datenstrukturen habe ich keine, ich habe ein Anfänger Buch über C gelesen, da wurden Einfach verkettete Listen behandelt, aber dann ist auch schon fertig
. Es wäre jedoch, toll wenn ich die wichtigsten Algorithmen verstehen würde und z. B. es schaffen würde ein einfaches Mühleprogramm zu entwerfen. Das Buch sollte jedoch wenn möglich nicht 3000 Seiten stark sein und natürlich an einen Anfänger gerichtet sein. Sprache: Deutsch/Englisch/Französisch.
Grundlegende Mathe Dinge wie Winkelfunktionen, Folgen, Analysis und so kann ich schon
Danke für Vorschläge!
Sokrates
PS: Ihr dürft natürlich auch Pages zum Gesuchten Vorschlagen, ich suche grundsätzlich zwar ein Buch (kann mich besser konzentrieren), aber vielleicht als Einstieg ist das Internet ganz gut?
-
Einer der "Klassiker" ist der Sedgewick. Davon gibts mehrere Ausgaben (und Varianten fuer mehrere Programmiersprachen). In den "aelteren" werden alle typischen Algorithmen behandelt, die es so gibt: grundlegende Sortier- und Suchalgorithmen, Graphentheorie, Datenkomprimierung, Geometrische Algorithmen und und und. Ist vielleicht schon zu viel fuer dich, andererseits willst du ja vllt. deinen Horizont erweitern:
Algorithmen in C | ISBN: 3827371821
In den neueren Ausgaben ist das Material in mehrere Teile aufgeteilt. Teil 1-4 gibts als zusammenhaengendes Buch. Behandelt werden Grundlagen, Datenstrukturen, Such- und Sortieralgorithmen. Obwohl das nur noch die Haelfte des urspruenglichen Buches ist (das hat 8 Teile), hat es gleich viel Seiten: der Stoff wird also wesentlich detailierter behandelt. Mir war das fast schon zu detailreich, war nicht 100%ig gluecklich (ich hab allerdings eine aelter Ausgabe, vllt. ist die neue Ausgabe besser). Die C-Variante hiervon gibts bis jetzt nur in Englisch:
Algorithms in C | ISBN: 9780201314526
(Amazon hat eh eine "look inside" Funktion, schau dir einfach mal das Probekapitel an!)Eine Alternative zum Sedgewick waere z. B.: http://www.c-plusplus.net/cms/modules.php?op=modload&name=mbBooks&file=index&func=isbn&isbn=3897211653 Hab ich nicht gelesen, klingt aber recht gut
-
Merci für die schnelle Antwort.
Noch schöner Sonntag
-
Stimmt es, daß Sedgewick keine Ahnung von C++ hat?
Das hat zumindest jemand bei den Amazon Rezensionen behauptet.
-
Uta Ma schrieb:
Stimmt es, daß Sedgewick keine Ahnung von C++ hat?
Das hat zumindest jemand bei den Amazon Rezensionen behauptet.
Die Algos sind so kurz und kompakt wie moeglich geschrieben. Die "Schoenheit" des Codes hat darunter natuerlch manchmal gelitten. Aber das Buch konzentriert sich ja auch auf Algorithmen und Datenstrukturen, nicht darauf, dir schoenen Code beizubrngen
-
Uta Ma schrieb:
Stimmt es, daß Sedgewick keine Ahnung von C++ hat?
Das hat zumindest jemand bei den Amazon Rezensionen behauptet.Algos in C ist ein Supi Einsteigerbuch. Die Sachen sind einfach und praxisnah und überzeugend.
Ich habe viele Algos in C++ oder Algos in Java und so Versuche durchgeblättert und jedesmal wurde mir schlecht. Völlig verpeilte Sicht der OO, zwanghaftes InKlassenReinstecken, Performancebremsen, Lächerlichkeit.
-
Uta Ma schrieb:
Stimmt es, daß Sedgewick keine Ahnung von C++ hat?
im originalwerk hat er pascal benutzt (das buch hiess nur 'algorithmen', ohne irgendwas dahinter). irgendwann später gabs das dann für alle möglichen sprachen, lässt sich wohl besser verkaufen, wenn man gezielt benutzer spezieller sprachen anspricht. die übersetzung von pascal in die anderen sprachen hat er bestimmt nicht selbst gemacht. also, ich würde vielleicht die pascal-version nehmen, pascal ist ja sehr leicht lesbar und algorithmen sind sowieso nicht sprachenabhängig.
-
Sehr gut finde ich auch Introduction to Algorithms von Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, und Clifford Stein von The Mit Press.
Das Buch geht nicht auf eine spezielle Programmiersprache ein, sondern erklärt die vorgehensweise der Algorithmen und Datenstrukturen anhand von Pseudocode, den jeder versteht, der ein bisschen C, C++ oder Java kann. Behandelt werden eigentlich alle wichtigen Sortier- und Suchalgorithmen, Listen, Heaps, Stacks, Queues etc.
-
;fricky schrieb:
Uta Ma schrieb:
Stimmt es, daß Sedgewick keine Ahnung von C++ hat?
im originalwerk hat er pascal benutzt (das buch hiess nur 'algorithmen', ohne irgendwas dahinter). irgendwann später gabs das dann für alle möglichen sprachen, lässt sich wohl besser verkaufen, wenn man gezielt benutzer spezieller sprachen anspricht. die übersetzung von pascal in die anderen sprachen hat er bestimmt nicht selbst gemacht. also, ich würde vielleicht die pascal-version nehmen, pascal ist ja sehr leicht lesbar und algorithmen sind sowieso nicht sprachenabhängig.
-
volkard schrieb:
stimmt das nicht? hat er 'algorithmen in C' vor 'algorithmen' rausgebracht?
kann schon sein, dass ich mich getäuscht habe.
-
;fricky schrieb:
volkard schrieb:
stimmt das nicht? hat er 'algorithmen in C' vor 'algorithmen' rausgebracht?
kann schon sein, dass ich mich getäuscht habe.
Das stimmt schon. Aber hättest Du mehr als ein paar Algorithmenbücher gelesen, wüßtest Du, daß es einen ganz erheblichen Unterschied machen kann, ob Arrays bei 0 oder bei 1 anfangen und daß es bei Algos mit Adressberechnungen, wie heapsort, manchmal gar nicht leicht ist, von Pascal-Pseudocode in C-Pseudocode zu übersetzen.
-
volkard schrieb:
... wüßtest Du, daß es einen ganz erheblichen Unterschied machen kann, ob Arrays bei 0 oder bei 1 anfangen und daß es bei Algos mit Adressberechnungen, wie heapsort, manchmal gar nicht leicht ist, von Pascal-Pseudocode in C-Pseudocode zu übersetzen.
nee, der unterschied ist völlig unbedeutend. bei algorithmenbüchern und pseudocode geht's darum, dass möglichst viele verstehen wie und warum etwas funktioniert (dazu ist pascal gut geeignet, das liest sich ganz leicht) und dann können sie's auch in ihrer lieblingssprache nachprogrammieren. du sollst ja nicht pascal zeile-für-zeile doof in C verwandeln und hoffen, dass es läuft. *fg*
-
;fricky schrieb:
volkard schrieb:
... wüßtest Du, daß es einen ganz erheblichen Unterschied machen kann, ob Arrays bei 0 oder bei 1 anfangen und daß es bei Algos mit Adressberechnungen, wie heapsort, manchmal gar nicht leicht ist, von Pascal-Pseudocode in C-Pseudocode zu übersetzen.
nee, der unterschied ist völlig unbedeutend. bei algorithmenbüchern und pseudocode geht's darum, dass möglichst viele verstehen wie und warum etwas funktioniert (dazu ist pascal gut geeignet, das liest sich ganz leicht) und dann können sie's auch in ihrer lieblingssprache nachprogrammieren. du sollst ja nicht pascal zeile-für-zeile doof in C verwandeln und hoffen, dass es läuft. *fg*
-
volkard schrieb:
du willst damit sagen, dass du's anders siehst, richtig?
-
;fricky schrieb:
volkard schrieb:
du willst damit sagen, dass du's anders siehst, richtig?
Deine Empfehlung, das älteste Buch zu nehmen, war Quark. Da wird für Barbarossa nur eine unnütze Hürde mehr aufgewofen. Pseudocode darf man auch mal übernehmen, ohne ihn neu zu erfinden. Sowas wie http://www.cc.gatech.edu/classes/cs3158_98_fall/heapsort.html bettelt doch darum. Das Problem ist, daß oft nichtmal klar ist, ob das Array bei 0 oder 1 beginnt. Es reicht manchmal nicht, nur den Wikipedia-Artikel über den Autor zu lesen, um sinnvoll mitreden zu können.
-
volkard schrieb:
Deine Empfehlung, das älteste Buch zu nehmen, war Quark. Da wird für Barbarossa nur eine unnütze Hürde mehr aufgewofen. Pseudocode darf man auch mal übernehmen, ohne ihn neu zu erfinden.
es ging um angeblich schlechte übersetzung des pascal-codes nach c++, worüber sich jemand beschwert hat. blätter mal zurück.
volkard schrieb:
Das Problem ist, daß oft nichtmal klar ist, ob das Array bei 0 oder 1 beginnt.
erstes element eines arrays ist immer erstes element, egal in welcher programmiersprache.
-
;fricky schrieb:
volkard schrieb:
Das Problem ist, daß oft nichtmal klar ist, ob das Array bei 0 oder 1 beginnt.
erstes element eines arrays ist immer erstes element, egal in welcher programmiersprache.
Du Dämel hast den Link nichmal angeklickt.
-
;fricky schrieb:
es ging um angeblich schlechte übersetzung des pascal-codes nach c++, worüber sich jemand beschwert hat. blätter mal zurück.
Direkt unter meinem "Algos in C ist supi" kommt Dein "Nee, nimm Algos (in Pascal)". Blätter mal zurück.
-
volkard schrieb:
Direkt unter meinem "Algos in C ist supi" kommt Dein "Nee, nimm Algos (in Pascal)". Blätter mal zurück.
ich schrieb: 'nimm die version, die nur algorithmen heisst' (weil er da keine übersetzungsfehler zwischen zwei programmiersprachen befürchten muss). ausserdem bezog sich mein posting auf das von 'Uta Ma' (siehe zitat). kann ich ahnen, dass du unter verfolgungswahn leidest? *fg*
-
;fricky schrieb:
kann ich ahnen, dass du unter verfolgungswahn leidest?
Ja, das kann man wohl erwarten.