Sie schrieb in einem Kommentar:
Ich Sortierung nicht. Nur das Finden der Max und Min eines Intervalls. Und das Intervall bewegt sich jedes 20ms
Es scheint, dass Sie tatsächlich ein bewegen Minimum und Maximum bewegt.
Ich glaube, dass dies effizienter durchgeführt werden kann, als jedes Mal das gesamte Intervall neu zu durchsuchen, unter der Annahme, dass sich das Intervall nur in eine Richtung bewegt und dass es signifikante Überlappungen zwischen aufeinander folgenden Intervallen gibt.
Eine Möglichkeit wäre, eine spezielle Warteschlange zu halten, wo jedes neue Element kopiert seinen Wert zu jedem Element in der Warteschlange, die größer ist (für die bewegliche Minimum), zB:
(5 8 4 7 7 0 7 0 4 4 3 4 0 9 7 9 5 4 2 0) ; this is the array
(4 4 4 4) ; the interval is 4 elements long, and initialized to the minimum
; of the first 4 elements
(4 4 4 7) ; next step, note that the current minimum is always the first element
(4 7 7 0) ; now something happens, as 0 is smaller than the value before
(4 7 0 0) ; there are still smaller values ...
(4 0 0 0) ; and still ...
(0 0 0 0) ; done for this iteration
(0 0 0 7)
(0 0 0 0) ; the 0 again overwrites the fatties before
(0 0 0 4)
(0 0 4 4)
(0 3 3 3) ; the 3 is smaller than the 4s before,
; note that overwriting can be cut short as soon as a
; value not bigger than the new is found
(3 3 3 4)
(0 0 0 0) ; and so on...
Wenn Sie durch bewegen Mehr als 1 Element jedes Mal, können Sie zuerst das Minimum aller neuen Werte berechnen und das für das Überschreiben verwenden.
Der schlechteste Fall für diesen Algorithmus ist, wenn das Array absteigend sortiert wird, dann ist es O (nm), wobei m die Intervalllänge und n die Arraylänge ist. Am besten ist es, wenn es absteigend sortiert wird, dann ist es O (n). Für den Durchschnittsfall konstruiere ich O (n log (m)).
Können Sie einen Kontext für das Snippet bereitstellen? Z.B. Was versuchen Sie zu erreichen, wie erhalten Sie die Eingabedaten usw. Vielleicht wäre es möglich, den Code-Flow zu ändern? – ya23
Ich arbeite mit Audiodaten. Sehen Sie dies für eine vollständige Erklärung http://stackoverflow.com/questions/1035533/how-do-i-visualize-audio-data – Nifle