Wie finde ich die min-und max-Wert in einem mehrdimensionalen array?
Ich möchten, finden die minimalen und maximalen Werte dieses Arrays. Irgendwann ist es eingestellt (512, 512)
UShorts. Eine For-Schleife wäre sehr zeitaufwendig für diese vielen Punkte und bin auf der Suche nach etwas sauberer. SelectMany mir eingefallen, aber ich weiß nicht, wie es zu implementieren.
Dim usResult As UShort(,)
Bearbeiten:
Ich habe versucht
Dim minValue As UShort = UShort.MaxValue
Dim maxValue As UShort = UShort.MinValue
Dim sw As New Stopwatch()
sw.Start()
For i As Integer = 0 To 511 Step 1
For j As Integer = 0 To 511 Step 1
minValue = Math.Min(usResult(i, j), minValue)
maxValue = Math.Max(usResult(i, j), maxValue)
Next
Next
sw.Stop()
Console.WriteLine(sw.ElapsedMilliseconds)
' This takes 2 to 3 milliseconds
- Es sei denn, Sie verwenden eine spezielle Datenstruktur, welche hält Daten sortiert oder verfolgt der kleinsten/größten Elemente, müssen Sie eine Schleife durch alle Elemente des Arrays.
- Ich muss berechnen das min und max so schnell wie möglich (tracking laser beam Bewegungen, wollen möglichst niedrige Zeitauflösung). Die for-Schleife zu sein scheint, die Schnellste Lösung, da die Daten nicht sortiert werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer for-Schleife kann viel weniger Zeit in Anspruch als erwartet. Versuchen Sie das timing, um zu sehen, wie lange es dauert, zu finden, die min. - und max 100.000 mal mit verschachtelten loops.
Der einfachste Weg, um min/max ein multi-dimensionales array ist, dies zu tun:
Es nicht bieten eine bessere Leistung als eine for-Schleife, obwohl. Du brauchst eine spezielle Datenstruktur, die hält die Elemente sortiert, oder verfolgt der min/max-Elemente, um bessere Leistung zu erhalten.
IEnumerable<T>
, so ist es das auflisten der Werte cast als TypObject
. Das ist, warum Sie haben zu werfen, um den konkreten Typ,UShort
.Casts the elements of an *System.Collections.IEnumerable* to the specified type.
...As *System.Collections.Generic.IEnumerable(Of TResult)*
, die generische, die Sie erwähnt. Jon Skeet deaktiviert es sich schön. Nochmals vielen Dank