Binäre Suchbäume
Übersicht
BlitzBasic
Codearchiv|
|
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 in eine Zahl wandeln.
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
BlitzBasic
Codearchiv
Powered by phpBB © 2001 - 2006, phpBB Group

