C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

trier efficacement un vector avec la stl

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Nicolas Aunai
Guest





PostPosted: Sat Jan 03, 2004 2:34 pm    Post subject: trier efficacement un vector avec la stl Reply with quote



salut,


j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier
selon la relation d'ordre <, d'une manière efficace, tant au niveau du
nbre de lignes de codes, qu'au niveau complexité de l'algorithme.

J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?

--
Nico,
http://astrosurf.com/nicoastro
messenger : [email]nicolas_aunai (AT) hotmail (DOT) com[/email]

Back to top
Nicolas Aunai
Guest





PostPosted: Sat Jan 03, 2004 4:08 pm    Post subject: Re: trier efficacement un vector avec la stl Reply with quote



bon, j'ai bidouillé un code... qu'en pensez-vous ?

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
vector<int> a;
a.push_back(3);
a.push_back(45);
a.push_back(2);
a.push_back(Cool;
a.push_back(1);
a.push_back(12);

for(unsigned int i=0; i<a.size();i++)
cout << a[i] << " ";

cout << endl;

vector
for(i = a.begin(); i!=a.end(); i ++)
{
j=min_element(i,a.end());
iter_swap(i,j);
}

for(unsigned int i=0; i cout << a[i] << " ";

cout << endl;

return 0;
}

--
Nico,
http://astrosurf.com/nicoastro
messenger : [email]nicolas_aunai (AT) hotmail (DOT) com[/email]

Back to top
Patrick Mézard
Guest





PostPosted: Sat Jan 03, 2004 4:16 pm    Post subject: Re: trier efficacement un vector avec la stl Reply with quote




Quote:
j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier
selon la relation d'ordre <, d'une manière efficace, tant au niveau du
nbre de lignes de codes, qu'au niveau complexité de l'algorithme.

J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?

Si tu veux trier tes entiers (en supposant que tu parles de types de base
comme int ou long) selon la relation < par défaut :

#include #include <algorithm>

int main(int argc, char* argv[])
{
std::vector<int> v;

//Le vector est rempli ici d'une manière ou d'une autre

std::sort(v.begin(), v.end());

// Le tri est réalisé en place
// std::sort prend un troisième paramètre template permettant de redéfinir
la relation d'ordre.
// Par défaut, il s'agit d'un std::less qui exploite operator< du type à
trier s'il est défini.
}

Et pour plus de détails :
http://www.cuj.com/documents/s=7992/cujcexp1908austern/

Patrick Mézard



Back to top
Nicolas Aunai
Guest





PostPosted: Sat Jan 03, 2004 4:25 pm    Post subject: Re: trier efficacement un vector avec la stl Reply with quote

Patrick Mézard a utilisé son clavier pour écrire :
Quote:
j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier
selon la relation d'ordre <, d'une manière efficace, tant au niveau du
nbre de lignes de codes, qu'au niveau complexité de l'algorithme.

J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?

Si tu veux trier tes entiers (en supposant que tu parles de types de base
comme int ou long) selon la relation < par défaut :

#include #include
int main(int argc, char* argv[])
{
std::vector
//Le vector est rempli ici d'une manière ou d'une autre

std::sort(v.begin(), v.end());

// Le tri est réalisé en place
// std::sort prend un troisième paramètre template permettant de redéfinir
la relation d'ordre.
// Par défaut, il s'agit d'un std::less qui exploite operator< du type à
trier s'il est défini.
}

Et pour plus de détails :
http://www.cuj.com/documents/s=7992/cujcexp1908austern/

Patrick Mézard



ah oui ok, merci bcp !!

--
Nico,
http://astrosurf.com/nicoastro
messenger : [email]nicolas_aunai (AT) hotmail (DOT) com[/email]


Back to top
Michel Michaud
Guest





PostPosted: Sat Jan 03, 2004 5:34 pm    Post subject: Re: trier efficacement un vector avec la stl Reply with quote

Dans news:bt6pqi$top$1 (AT) news-reader1 (DOT) wanadoo.fr, Patrick
Mézard <patrick.mezard (AT) ifrance (DOT) com> a écrit :
Quote:
// std::sort prend un troisième paramètre template permettant de
redéfinir la relation d'ordre.
// Par défaut, il s'agit d'un std::less qui exploite operator< du
type à trier s'il est défini.

Non, il y a deux fonctions sort. La première utilise directement
< et l'autre prend la relation d'ordre. Il n'y a pas de less
impliqué (c'était indiqué ainsi dans le livre de BS mais je lui
ai fait remarquer l'erreur qui est maintenant corrigée dans les
plus récentes versions de son livre). Tu peux vérifier en
faisant une fonction less sémantiquement différente de ta
fonction < pour un type : c'est le < qui sera utilisé.

Par ailleurs, il y a aussi une fonction stable_sort (deux en fait
pour permettre aussi de fournir l'ordre désiré) qui préserve
l'ordre des éléments qui sont égaux selon la comparaison, ce qui
est parfois utile.

--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.