Binäre Suchbäume
Übersicht

![]() |
EingeproggtBetreff: Binäre Suchbäume |
![]() Antworten mit Zitat ![]() |
---|---|---|
Servus, grüß euch und herzlich willkommen!
Musste für die Uni mich mit binären Suchbäumen auseinander setzen und da in meinen Unterlagen so schöne Pseudo-Codes enthalten sind hab ich sie gleich in BB-Syntax umgesetzt. ![]() Dank dem Hinweis von mpmxyz ist der Code sowohl für numerische als auch für alphanumerische Schlüssel verwendbar, ein Nachteil bleibt aber noch: ![]() NACHTRAG am 1.5.2010: Unser Forum-Mitglied darth hatte dieselbe Vorlesung wie ich und ähnliche Lust auf diese binären Bäume wie ich nur dass er es bis zum balancierten Baum durchgezogen hat - Super darth ![]() Ich verweise an dieser Stelle einfach auf seinen Worklog in welchem er seine Arbeit beschreibt und auch vorstellt: --> https://www.blitzforum.de/worklogs/292/#2342 Also wenn man den Type ergänzt bzw. wie im Kommentar angegeben den Type per "Alle ersetzen" umbenennt funktioniert das Prinzip wunderbar, auch für eigene Anwendungen - in meinem Beispielcode schaff ich 10.000 Suchvorgänge in einem Baum mit 10.000 Elementen in 26ms, ohne DebugMode sogar in 6ms. Also ich find das geil ![]() Also hier der Code / die Lib / das Include: BlitzBasic: [AUSKLAPPEN] ;Binärer Suchbaum, BB-Vorlage und hier der Beispielcode der eigentlich nur dafür konstruiert ist die Schnelligkeit zu demonstrieren - er ist ziemlich sinnlos (wer würde für einen identifizierenden Schlüssel einen Zufallswert nehmen ![]() BlitzBasic: [AUSKLAPPEN] ;Frei erfundenes Anwendungsbeispiel des binären Suchbaumes: Man kann sich übrigens n bisschen spielen und wirklich Namen einsetzen anstatt dem "x". Ich habe für meine Tests zum Beispiel den Namen-Generator von SilverKnee benutzt. Ja... das wars erstmal. Eventuell krieg ich wiedermal Lust darauf und setz mich dran den Baum zu balancieren... mal schauen. So ist es halt mal n Codeschnipsel der hier hoffentlich gut aufgehoben ist. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
- Zuletzt bearbeitet von Eingeproggt am Sa, Mai 01, 2010 20:13, insgesamt 3-mal bearbeitet
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
(Ich traue dem Code mal ungetestet. ![]() Schöne Sache! Stringvergleiche sollten aber möglich sein, indem du aus "key#" "key$" machst. Womit möchtest du denn die Suchbäume balancieren? Machst du sie zu Rot-Schwarz-Bäumen? Diese nutzt nämlich BlitzMax. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habs seit gestern nicht weiter gemacht.
Aber ich traue meinen Augen nicht ![]() Ich dachte immer, um Strings zu sortieren müsste man manuell alle Zeichen durchgehen und die mittels Asc ![]() Und auf deine Aussage hin probierte ich das grad... Code: [AUSKLAPPEN] DebugLog "abc">"bca" ;0
DebugLog "abc"<"bca" ;1 ja is das geil - Danke, da hab ich grad was gelernt ![]() Werd sofort editieren oben. Was die Balance angeht so dachte ich an AVL-Bäume (auch für die hab ich da Pseudo Code herum liegen ^^) Muss gestehen dass ich "Rot-Schwarz-Bäume" bis gestern nicht kannte - wo mich bereits ein Mitlgied dieses Forums in ICQ darauf angesprochen hatte. mfG, Christoph. EDIT: So, geändert (und auch gleich die Float-Sache entfernt, weil wenn schon Zahlen dann werden die Schlüssel ja doch meist Int sein) Allerdings bitte ich zu berücksichtigen dass String-Vergleiche logischerweise langsamer sind als Zahlen zu vergleichen - das ist nunmal so, ich hätte es auch nicht schneller machen können. Für numerische Schlüssel ist daher % ganz klar zu bevorzugen (ich hab mal getestet: 26ms <> 756ms!) |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group