2010-05-24 14 views
5

J'ai un tableau de (4) nombres à virgule flottante et j'ai besoin de trier le tableau dans l'ordre décroissant. Je suis assez nouveau pour C++, et je me demandais quelle serait la meilleure façon de le faire?trier un tableau de flottants en C++

Merci.

Répondre

18

Utilisation std::sort avec un comparateur non par défaut:

float data[SIZE]; 
data[0] = ...; 
... 

std::sort(data, data + size, std::greater<float>()); 
+0

@sth - oublié à ce sujet. Mise à jour de ma réponse ... –

+2

Pour le débutant, 'std :: sort' est défini dans l'en-tête' 'en STL. Bien sûr, si c'est un exercice de devoirs, vous devriez probablement implémenter votre propre fonction 'sort'. – Johnsyweb

+0

@RSamuelKlatchko Qu'est-ce que "taille" dans votre code? – tmighty

1

En supposant ce qui suit:

float my_array[4]; 

Vous pouvez trier comme ceci:

#include <algorithm> 

// ... in your code somewhere 
float* first(&my_array[0]); 
float* last(first + 4); 
std::sort(first, last); 

Notez que le second paramètre (last) indique un passé la fin de votre tableau de 4 éléments; C'est la bonne façon de passer la fin de votre tableau aux algorithmes STL. De là, vous pouvez ensuite appeler:

std::reverse(first, last); 

Pour inverser le contenu de la matrice. Vous pouvez également écrire un comparateur personnalisé pour la routine sort, mais je considérerais que c'est un pas au-dessus de STL de niveau débutant; c'est à vous.

+0

Vous avez manqué la partie "dans l'ordre décroissant" de la question. – pmr

+0

@pmr: Correction, merci. – fbrereto