obtenir une seconde max élément dans matlab

J'ai un tableau, dire A = [ 3 5 6 7 ]. Je sais que je peux obtenir la valeur maximale de ce tableau avec max(A) et il retourne 7, mais comment puis-je obtenir la seconde max (6) à partir de cette matrice, sans tri ou le retrait de la première valeur maximale?

quel est votre préoccupation sur le tri? Je pose cette question car il est possible que vous êtes prématurément en essayant de l'optimiser. Toujours regarder uniquement pour l'essentiel goulot d'étranglement de votre programme si il est lent.
en raison de l'évolution des indices :(.
voir la mise à jour dans ma réponse pour que
désolé, je n'ai pas le genre de chose. L'écriture explicite de l'algorithme est assez facile, vous le savez, non? Ma conjecture est que l'algorithme explicite sera plus lente que matlab de base de la fonction, bien que.
Donc, j'ai une supposition. Vous pouvez avoir linéaire, 1 passe, solution itérative; c'est facile à faire. Ou de base-fonction linéaire 3-passer de la solution (Barnaba, qui est sans doute plus rapide que le tri en fonction de la solution, et probablement plus rapide que 1 passe itératif). Êtes-vous toujours à la recherche de quelque chose de mieux?

OriginalL'auteur Yusef Mohamadi | 2012-12-02