Merci beaucoup pour ta réponse rapide. J'avais vaguement pensé à quelque chose comme ça, mais sans trop concrétiser. Qu'est-ce que tu penses de quelquechose comme ça (V est mon vecteur initial) :
- on définit un vecteur M de taille K, intialisé avec des 0
- pour i = 1 to N on fait :
-- si V(i) > M(1), K(1) = V(i)
-- puis un passage de tri sur K pour remettre les valeurs dans l'ordre croissant (si M(j) > M(j+1), on les échange)
- fin boucle
Sauf erreur mon vecteur K contient bien ce qu'il faut à la fin (avec une complexité en N*K ?) et il reste à mettre à 0 toutes les valeurs de N qui sont < M(1), ça te paraît OK ?