Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Sortieralgorithmen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 15.06.2008, 13:40    Titel: Sortieralgorithmen Antworten mit Zitat

Hallo!
Für ein Unterprogramm, dass einen Datei-Auswählen-Dialog anzeigt benötige ich einen Algorithmus, um die Dateinamen dem Namen nach zu sortieren (wie z.B. im MS-DOS Editor oder in der QB-IDE selbst). Dieser sollte sehr schnell und - wenn möglich - nicht speicherintensiv oder schwer umsetzbar sein.

Könnt ihr mir da einen Algorithmus von den vielen Sortieralgorithmen empfehlen?

LG und Vielen Dank im Voraus,
St_W
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 15.06.2008, 13:47    Titel: Antworten mit Zitat

Hallo,

sehr schnell und sehr speichersparsam ist der QuickSort-Algorithmus. Der gehört zwar nicht zu den einfachsten Sortieralgorithmen, aber zu den beliebtesten. zwinkern

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 15.06.2008, 15:10    Titel: Antworten mit Zitat

ein beispielcode für den von sebastian genannten quicksort-algorithmus:
Code:

SUB QuickSort (Zeile() AS STRING, Anzahl AS INTEGER)

   CONST MaxMerk = 15   ' reicht zum Sortieren von
                        ' 2^15 Elementen

   DIM Links AS INTEGER, Rechts AS INTEGER
   DIM MerkAnzahl AS INTEGER, Vergleich AS STRING
   DIM MerkL(1 TO MaxMerk) AS INTEGER
   DIM MerkR(1 TO MaxMerk) AS INTEGER

   MerkAnzahl = 1
   MerkL(1) = 1
   MerkR(1) = Anzahl

   DO
      Links = MerkL(MerkAnzahl): Rechts = MerkR(MerkAnzahl)
      MerkAnzahl = MerkAnzahl - 1
      DO
         i% = Links: j% = Rechts
         Vergleich = Zeile((Links + Rechts) \ 2)
         DO
            DO WHILE Zeile(i%) < Vergleich: i% = i% + 1: LOOP
            DO WHILE Vergleich < Zeile(j%): j% = j% - 1: LOOP
            IF i% <= j% THEN
               SWAP Zeile(i%), Zeile(j%)
               i% = i% + 1: j% = j% - 1
            END IF
         LOOP UNTIL i% > j%
         IF j% - Links < Rechts - i% THEN
            IF i% < Rechts THEN
               MerkAnzahl = MerkAnzahl + 1
               MerkL(MerkAnzahl) = i%
               MerkR(MerkAnzahl) = Rechts
            END IF
            Rechts = j%
         ELSE
            IF Links < j% THEN
               MerkAnzahl = MerkAnzahl + 1
               MerkL(MerkAnzahl) = Links
               MerkR(MerkAnzahl) = j%
            END IF
            Links = i%
         END IF
      LOOP WHILE Links < Rechts
   LOOP UNTIL MerkAnzahl = 0

END SUB


_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 15.06.2008, 20:54    Titel: Antworten mit Zitat

reicht nur im optimalfall zum sortieren von 2^15 elementen, wenn du ne ungünstige konstellation triffst reichts grade mal für 16 elemente ;P
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 17.06.2008, 11:53    Titel: Antworten mit Zitat

Der Algorithmus funktioniert zwar toll, aber ich verstehe ihn nicht.
Könnte mir das jemand erklären? (den Wikipedia-artikel zu QuickSort habe ich mir übrigens schon durchgelesen)
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 17.06.2008, 12:19    Titel: Antworten mit Zitat

funktioniert nach dem prinzip "nimm dir ne zahl von der du denkst dass sie möglichst nah am mittelwert der sortierenden zahlen liegt, sortiere dann deine liste in zwei gruppen, alle zahlen die größer sind und alle zahlen die kleiner sind als der wert, danach mach das selbe für die beiden neuen listen bis sie jeweils nurnoch 1 element groß sind und schreib sie dann hintereinander" und schon ist das ganze sortiert
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 17.06.2008, 16:59    Titel: Antworten mit Zitat

Lutz Ifer empfiehlt Bogosort zwinkern
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
b3ast



Anmeldungsdatum: 27.04.2008
Beiträge: 34

BeitragVerfasst am: 18.06.2008, 21:47    Titel: Antworten mit Zitat

wenn das mit einem zufallsgenerator funktioniert, ist es nicht wirklich zu empfehlen. da wartet man ja unter umständen ne ewigkeit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 18.06.2008, 22:16    Titel: Antworten mit Zitat

gratulation, du hast bogosort gerafft! du bist echt spitze! Daumen rauf!


Autsch!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz