Vous avez écrit ce qui suit dans un commentaire:
Je ne suis pas le tri. Seulement trouver le maximum et le minimum d'un intervalle. Et l'intervalle se déplace tous les 20ms
Il semble que vous voulez vraiment un minimum de déplacement et déplacement maximal. Je crois que cela peut être fait plus efficacement que de chercher à nouveau l'intervalle entier à chaque fois, en supposant que l'intervalle ne se déplace que dans une direction, et qu'il y a un chevauchement significatif entre les intervalles suivants.
Une façon serait de garder une file d'attente spéciale, où chaque nouvelle copie des éléments de sa valeur à chaque élément dans la file d'attente qui est plus grand (pour le minimum mobile), par exemple:
(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...
Si vous déplacez par Plus d'un élément à chaque fois, vous pouvez d'abord calculer le minimum de toutes les nouvelles valeurs et l'utiliser pour la réécriture.
Le pire des cas pour cet algorithme est lorsque le tableau est trié par ordre décroissant, alors il est O (nm), où m est la longueur de l'intervalle et n la longueur du tableau. Le meilleur des cas est quand il est trié par ordre décroissant, alors c'est O (n). Pour le cas moyen, je conjecture O (n log (m)).
Pouvez-vous fournir un contexte pour l'extrait? Par exemple. qu'essayez-vous d'accomplir, comment obtenez-vous les données d'entrée, etc. Peut-être qu'il serait possible de changer le flux de code? – ya23
Je travaille avec des données audio. Voir ceci pour une explication complète http://stackoverflow.com/questions/1035533/how-do-i-visualize-audio-data – Nifle