Geehrtes Forum,
ich habe eine Klasse geschrieben, der das Sortieren von X,Y-Wertepaaren übernimmt, welches ohne Umweg nicht ordnungsgemäß verläuft.
Gedacht hab ich mir, die X,Y Fragmente zu addieren, und sie nach ihrer Größe nach zu sortieren, was auch klappte...
Beispiel:
wird zu
das Problem hierbei, wenn der X-Wert dem Restwert des Arrays kleiner war, so waren die Endergebnisse nicht mehr diesselben...
Deswegen dachte ich mir, ich speichere die Ursprungswerte in ein anderes Array, und vergleiche durch Rekursion ob sie mit dem Sortierten die selbe Summe ergeben...
So,
Doch es sortiert nicht ) ; ...
Hoffe auf Antworten.
Grüsse...
ich habe eine Klasse geschrieben, der das Sortieren von X,Y-Wertepaaren übernimmt, welches ohne Umweg nicht ordnungsgemäß verläuft.
Gedacht hab ich mir, die X,Y Fragmente zu addieren, und sie nach ihrer Größe nach zu sortieren, was auch klappte...
Beispiel:
wird zu
das Problem hierbei, wenn der X-Wert dem Restwert des Arrays kleiner war, so waren die Endergebnisse nicht mehr diesselben...
Deswegen dachte ich mir, ich speichere die Ursprungswerte in ein anderes Array, und vergleiche durch Rekursion ob sie mit dem Sortierten die selbe Summe ergeben...
So,
VB.NET-Quellcode
- Imports System.Math
- Imports System.Drawing
- Public Class SortPoints
- Public Sub New(ArrayOfPointFObj As PointF())
- ArrayOfPointF = ArrayOfPointFObj
- End Sub
- Private ArrayOfPointF(3) As PointF
- Private CurrentPointF(3) As PointF
- Private ListOfSingles As New List(Of Single)
- Private SortedSingles(3) As Single
- Private Counter As Integer = -1
- Public Function SortPoints() As PointF()
- For i = 0 To ArrayOfPointF.Length - 1
- ListOfSingles.Add(ArrayOfPointF(i).X + ArrayOfPointF(i).Y)
- CurrentPointF(i) = ArrayOfPointF(i)
- Next
- ListOfSingles.Sort()
- ListOfSingles.CopyTo(SortedSingles)
- Return DoAction()
- End Function
- Private Function DoAction() As PointF()
- Counter += 1
- For j = 0 To ArrayOfPointF.Length - 1
- If SortedSingles(Counter) = CurrentPointF(j).X + CurrentPointF(j).Y Then
- ArrayOfPointF(Counter) = CurrentPointF(j)
- ElseIf Counter >= ArrayOfPointF.Length - 1 Then
- Else
- DoAction()
- End If
- Next
- Return ArrayOfPointF
- End Function
- End Class
Doch es sortiert nicht ) ; ...
Hoffe auf Antworten.
Grüsse...