Gesammten Inhalt einer Combobox alphabetisch ordnen?!

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

Dusselchen14

Betreff: Gesammten Inhalt einer Combobox alphabetisch ordnen?!

BeitragMi, Aug 12, 2009 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich fass mich kurz (suche hat nicht wirklich geholfen):
Wie kann ich am besten den gesammten Inhalt einer combobox alphabetisch ordnen, ohne die Geschindigkeit des Programms all zu sehr runter zu ziehen?
Ich verwende keine Types oder Arrays.
Danke,
Dusselchen14
 

n-Halbleiter

BeitragMi, Aug 12, 2009 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Sortieren solltest du sowieso nur bei bestimmten Events durchführen. Ich würde dir raten, einen Type zu erstellen (dieser dient als temporärer Type) und dann bei dem bestimmten Event alle Einträge auszulesen GadgetItemText und im Type zwischenzuspeichern. (Alternativ geht das auch mit Arrays, du musst dafür aber erst die Einträge zählen CountGadgetItems und dann das Array dimensionieren) Danach kannst du theoretisch die Einträge mit Quicksort oder Mergesort zu sortieren. Um dann wirklich die Einträge nach Alphabet zu sortieren, gibst du jedem Buchstaben eine Wertigkeit (a ->1, b ->2, usw.). Wenn auch die Zweitbuchstaben beachtet werden sollen, solltest du Mergesort nutzen, und den Algorithmus erst auf den xten, dann den (x-1)ten, (x-2)ten... (bis hin zum ersten) Buchstaben jedes Eintrages loslassen. Dieses Verfahren funktioniert nicht mit Quicksort, da dieser nicht stabil ist. Es ist einiges an Code, weswegen ich auch kein Beispiel gebe, aber es ist machbar. Lass' dich davon aber nicht unterkriegen, Mergesort ist an sich perfekt für deine Aufgabenstellung. Danach musst du nur noch die Einträge deines Types/Arrays neu als Items an die Combobox anhängen.
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

Hip Teen

BeitragDo, Aug 13, 2009 1:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich frag mich ja immer warum so schrottige Sortierverfahren wie Quicksort empfohlen werden...
Also, im Zweifel nimmt man natürlich Mergesort, aber eventuell könnte [url="http://de.wikipedia.org/wiki/Radixsort"]Radixsort[/url] für dich das richtige sein (komisch, bei mir in der Vorlesung hieß es Bucketsort Rolling Eyes ). Hängt davon ab, wie unterschiedlich lang die Einträge sind. Und wichtig ist für das Verfahren noch zu wissen, wie lang der längste Eintrag ist. Aber dann hast du eine Methode, die auch noch bei gaaanz vielen Einträgen schnell ist.
Ach ja, sortieren ohne die Einträge in Arrays oder Types zwischenzuspeichern solltest du lieber gleich vergessen...
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

Dusselchen14

BeitragDo, Aug 13, 2009 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Danke für die ausführliche Beschreibung. Aber ich seh da noch nicht ganz durch.
Ich hab jetzt nen type "eintrag" mit nem field "t$" für den text des Eintrages. und hab alle Einträge schon eingelesen. und jetzt?
 

n-Halbleiter

BeitragDo, Aug 13, 2009 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt musst du sortieren. Schau' dir Mergesort oder das von Hip Teen vorgeschlagene Radixsort an, implementiere das und werde glücklich. Very Happy Die Anleitungen auf Wikipedia sind an sich total ausreichend.
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

TimBo

BeitragDo, Aug 13, 2009 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,

wieder was gelernt !!

Dieser Algo ist ja echt genial gemacht, ich frage mich
welche Leute in der Lage sind, solche coolen Algos zu entwerfen.

Ich wäre nie auf die Idee gekommen.

Danke
Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group