Tri d'un tableau 1D c++
beni
-
tuxun Messages postés 357 Date d'inscription Statut Membre Dernière intervention -
tuxun Messages postés 357 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Quelqu'un pourrait m'aider à trier ce tableau en c++ comme suit:
tab={-1, -1, 0,0 ,17,25,-1,8,0,28} en tab={-1,-1,0,0,2,3,-1,1,4 }.
C'est à dire à reassigner les elements du tableau par ordre de grandeur sans toucher aux 0 et -1.
Je suis confronté à un debordement de capacité de type int, ce qui m'oblige à reassigner mon tableau à chaque iteration.
Je vous remercie d'avance.
Quelqu'un pourrait m'aider à trier ce tableau en c++ comme suit:
tab={-1, -1, 0,0 ,17,25,-1,8,0,28} en tab={-1,-1,0,0,2,3,-1,1,4 }.
C'est à dire à reassigner les elements du tableau par ordre de grandeur sans toucher aux 0 et -1.
Je suis confronté à un debordement de capacité de type int, ce qui m'oblige à reassigner mon tableau à chaque iteration.
Je vous remercie d'avance.
A voir également:
- Tri d'un tableau 1D c++
- Trier un tableau excel - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
3 réponses
utilser la boucle suivantes
for(i=1,i..n,i++)
for(j=1,j..n,j++)
x=t[i]
t[i]=t[j]
t[j]=x
la suite avec toi......................
for(i=1,i..n,i++)
for(j=1,j..n,j++)
x=t[i]
t[i]=t[j]
t[j]=x
la suite avec toi......................
Salut! j'ai sous les yeux un article intitulée: "Implémentation des algorithmes de tri" paru dans le numéro 2
du "Linux developer's Journal"
Je vais essayé d'étayer la réponse de abderrazzack...
le tri qu'il t'explique et un tri par selection...
On parcourt la matrice en supposant que le premier nombre est le plus petit...
Jusqu'au cas ou évidemment on rencontre une valeur plus petite que celle de l'indice 0 de la matrice...
Donc on echange ces 2 éléments afin de placer le plus petit au premier indice.
Puis on retest pour voir si tab[0] est la plus petite valeur de toutes la liste...
Si Oui, on reitere a partir de tab[1] sinon, on echnage avec la plus petite valeur trouvé...
Désolé je n'ai pas le temps de finir mais sache que cet algo est en O(szlist^2),
ce qui n'est pas optimal au niveau du temps d'execution...
Sinon le tri par insertion dichotomique:
(qui parcourt la liste dans les deux sens en meme temps a partir du millieu et realise un tri par insertion
simple: tres semblable au tri par selection en vitesse d'execution O(szlist^2) mais est plus rapide
sur une liste presque triées tout de meme, ce qui permettra de l'utiliser dans un autre algoritme:le tri par insertion de structure (binary search) ou le tri shell)
A demain!
-Tuxun-
du "Linux developer's Journal"
Je vais essayé d'étayer la réponse de abderrazzack...
le tri qu'il t'explique et un tri par selection...
On parcourt la matrice en supposant que le premier nombre est le plus petit...
Jusqu'au cas ou évidemment on rencontre une valeur plus petite que celle de l'indice 0 de la matrice...
Donc on echange ces 2 éléments afin de placer le plus petit au premier indice.
Puis on retest pour voir si tab[0] est la plus petite valeur de toutes la liste...
Si Oui, on reitere a partir de tab[1] sinon, on echnage avec la plus petite valeur trouvé...
Désolé je n'ai pas le temps de finir mais sache que cet algo est en O(szlist^2),
ce qui n'est pas optimal au niveau du temps d'execution...
Sinon le tri par insertion dichotomique:
(qui parcourt la liste dans les deux sens en meme temps a partir du millieu et realise un tri par insertion
simple: tres semblable au tri par selection en vitesse d'execution O(szlist^2) mais est plus rapide
sur une liste presque triées tout de meme, ce qui permettra de l'utiliser dans un autre algoritme:le tri par insertion de structure (binary search) ou le tri shell)
A demain!
-Tuxun-