Sortierung (gelöst)
Übersicht

RocysBetreff: Sortierung (gelöst) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group