Sortierung (gelöst)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Rocys

Betreff: Sortierung (gelöst)

BeitragFr, Nov 15, 2013 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versuche, den Median von unterschiedlich vielen Werten herauszufinden. Dafür möchte ich zuerst die Elemente sortieren und nutze folgenden Code:

Code: [AUSKLAPPEN]

Global mMedianElementaAnzahl%
Type mMedianElement
   Field Wert#
End Type

Function mMedianAddElement(wert#,neu%)
   Local mMedianElement.mMedianElement
   Local old.mMedianElement
   If neu=1 Then
      Delete Each mMedianElement
      mMedianElementaAnzahl=0
   End If
   mMedianElementaAnzahl=mMedianElementaAnzahl+1
   mMedianElement.mMedianElement=New mMedianElement
   mMedianElement\Wert=wert
   For old.mMedianElement=Each mMedianElement
      If old><mMedianElement Then
         If old\Wert<=mMedianElement\Wert Then Insert mMedianElement After old
         If old\Wert>mMedianElement\Wert Then Insert mMedianElement Before old
      End If
   Next
   DebugLog "MEDIAN"
   For old.mMedianElement=Each mMedianElement
      DebugLog old\Wert
   Next
   
End Function


Leider sind die Werte überhaupt nicht gut sortiert. Kann mir jemand meinen Denkfehler offenbaren?

Edit:
Kurz mal eine rauchen, dann hat man oft den Kopf wieder frei... Der folgende Code funktioniert:

Code: [AUSKLAPPEN]
Function mMedianAddElement(wert#,neu%)
   Local mMedianElement.mMedianElement
   Local old.mMedianElement
   If neu=1 Then
      Delete Each mMedianElement
      mMedianElementaAnzahl=0
   End If
   mMedianElementaAnzahl=mMedianElementaAnzahl+1
   mMedianElement.mMedianElement=New mMedianElement
   mMedianElement\Wert=wert
   old=First mMedianElement
   If mMedianElement\Wert<=  old\Wert Then Insert mMedianElement Before old
   For old.mMedianElement=Each mMedianElement
      If old><mMedianElement Then
         If old\Wert<=mMedianElement\Wert Then Insert mMedianElement After old
         ;If old\Wert>mMedianElement\Wert Then Insert mMedianElement Before old
      End If
   Next
   DebugLog "MEDIAN"
   For old.mMedianElement=Each mMedianElement
      DebugLog old\Wert
   Next
   
End Function


Das Problem war, dass ich jeweils nur den Nachbarwert betrachtet habe. Dadurch wurden Elemente an die falsche Stelle geschoben. Jetzt wird nur noch der FOLGENDE Wert betrachtet und als Korrektiv der erste.

Falls die Admins der Meinung sind, dieser Thread böte kein Erkenntnispotential: Bitte löschen!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group