InsertSort

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Eingeproggt

Betreff: InsertSort

BeitragMo, Apr 09, 2007 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab mich mal an Sortieralgorithmen versucht. Da ich den Insertsort schon in der Schule machen musste, hab ich ihn gleich in Blitz implementieren wollen - und gleich ei haufen Probleme gehabt.
das hartnäckigste meiner Probleme ist einfach die tatsache, dass manchmal die Nummern verdreht werden und ich nicht dahinter komm wieso. Der Code ist kaum kommentiert und gehört zu einem 1000-Zeilen-Programm, welches ich nicht hochladen möchte. Vlt kann mir trotzdem jemand helfen / tips geben

Code:

Type list_el
   Field name$
   Field num
End Type

Function sort()
   el1.list_el=First list_el
   Repeat
      el1=After el1
      vergl1$="_"+Lower(el1\name)
      el2.list_el=First list_el
      While el2<>el1
         vergl2$="_"+Lower(el2\name)
         i=1 : zahl1=0 : zahl2=0
         While zahl1=zahl2 And i<Len(vergl1) And i<Len(vergl2)
            zahl1=Asc(Mid(vergl1,i,1))
            zahl2=Asc(Mid(vergl2,i,1))
            i=i+1
         Wend
         DebugLog "Vorher-----------";
         DebugLog "name: "+el2\name+" <-> "+el1\name;
         DebugLog "num: "+el2\num+" <-> "+el1\num;
         DebugLog "vergl: "+vergl2+" <-> "+vergl1;
         DebugLog "zahl: "+zahl2+" <-> "+zahl1;
         If zahl1<zahl2 Then
            el1\num=el2\num
            ;Alle anderen weiterschieben
            el.list_el=el2
            While el<>el1
               el\num=el\num+1
               el=After el
            Wend
            Exit
         EndIf
         el2=After el2
      Wend
      DebugLog "Nachher-----------";
      DebugLog "name: "+el2\name+" <-> "+el1\name;
      DebugLog "num: "+el2\num+" <-> "+el1\num;
      DebugLog "vergl: "+vergl2+" <-> "+vergl1;
      DebugLog "zahl: "+zahl2+" <-> "+zahl1;
      KeyWait() ;
      If KeyHit(1) Then End ;
   Until el1=Last list_el
   DebugLog "----------------------------"
   DebugLog "----------------------------"
   DebugLog "Endergebnis"
   For el=Each list_el
      DebugLog el\name+" -> "+el\num
   Next
End Function
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group