J'ai essayé d'écrire une fonction de tri d'insertion qui permutera entre croissant et décroissant en fonction du signe de son argument (order
). Cela fonctionne, mais cela ne semble pas correct car l'opérateur conditionnel que j'ai utilisé comme commutateur ajoutera une surcharge à chaque itération de la boucle interne. Donc, je voudrais demander votre avis sur la façon dont je pourrais écrire une meilleure version de ma fonction.Fonction de tri d'insertion avec commutateur de commande
void Array::sort(int order) //Array is a struct that contains a vector of pointers named vect, as well as this function.
{
if (order==0) return;
bool ascending = (order>0);
int i,j;
Data* buffer; //Data is a struct containing some variables, including the key that has to be sorted.
for (i=1; i<_size; i++)
{
buffer = vect[i]; //A vector of pointers to Data objects declared in the Array struct.
j=i-1;
while (j>=0 && (ascending?(vect[j]->key > buffer->key):(vect[j]->key < buffer->key)))
{
vect[j+1] = vect[j];
j--;
}
vect[++j] = buffer;
}
}
http://codereview.stackexchange.com/ correspond plus à – acrilige
À quoi servait la critique? –
Je suppose que quelqu'un pensait que cela ne faisait pas de recherche ou ne pensait pas qu'il était conçu pour être utile à un public plus large. Je ne dis pas que je suis d'accord, mais ce sont les conditions dans le texte du vol stationnaire up/downvote. – Useless