Poster un nouveau sujet Poster une réponse
ordonner une liste
Auteur Message
monsaibert
Invité
Posté le : Ven 30 Mar 2012, 15:35   Citer 

programme de tri croissant

Si on veut établir un code pour ordonner une liste dans un ordre croissant point par point on aboutit, xn et x(n+1) appartenant à L1,à devoir permutter les 2 nombres dans la liste L1. Comment faire?

Rq: on sait que TI le fait: TriCroi

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 30 Mar 2012, 17:36   Citer 

Nous pouvons effectuer ce procédé facilement pour deux valeurs et avec quelques tests.
La difficulté pour les permutations de ce genre est qu'il faut stocker au moins une des valeurs en dehors de la variable de départ.

Code
If L1(1)>L1(2  // test de décroissance
Then
L1(1->A    // stock intermédiare du maximum
L1(2->L1(1 // placer le minimum au début
A->L1(2    // placer le maximum à la fin
End
      // si la liste était déjà croissante, on ne change rien.


Mais je compte te proposer ce que j'ai créé à l'occasion d'un défi dans [ce sujet] car celui-ci effectue un tri à la place de TriCroi (SortA en anglais).
Je l'ai épuré pour obtenir ceci :
Code
dim(L1->L
ClrList L2
For(W,1,L         // chaque valeur de la liste sera recopiée
min(L1->L2(W      // stock du minimum à sa place dans la nouvelle liste
 For(V,1,L        // recherche de la position du minimum
 If L1(V)=min(L1
 V->X
 End
max(L1->L1(X      // remplacement du minimum par le maximum, pour que la
                  // prochaine fonction min(L1) détecte un autre minimum
End
L2->L1  // stocker le résultat dans la liste de départ



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
monsaibert
Invité
Posté le : Mar 03 Avr 2012, 19:07   Citer 

Bien sûr j'allais dans une mauvaise direction.Je pensais pouvoir comparer terme apres terme... "La difficulté pour les permutations de ce genre est qu'il faut stocker au moins une des valeurs en dehors de la variable de départ."
Il fallait penser 2 listes.

Il n'y a pas moyen de supprimer simplement un terme d'une liste ?

Le code serait plus simple si on pouvait supprimer le minimum à chaque fois.

Merci Linka pour le mise au point de ce code.Il n'a posé aucun probléme.

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mar 03 Avr 2012, 21:46   Citer 

pour suprimer, tu met le terme en question a la fin, puis tu diminue de 1 la dimention de la liste. Mais bon, c'est lourd. Sinon, tu peut tout copier dans une seconde iste sauf ce terme, mais c'est pas mieux.

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 19 Avr 2012, 16:13   Citer 

J'ai appris quelque chose en classe.
(c'est la deuxième fois en 2ans tongue.gif)
Le prof a montré l'algorithme de "tri à bulle" qui est supposé être plus rapide que les autres algorithmes si tout est codé dans le même language.
(ce qui n'est pas le cas de mon programme précédent qui utilise la fonction min() codée en assembleur)

J'en ai traduit la méthode en TI-Basic :
Code
dim(L1->N
For(A,1,N-1
For(B,1,N-A
L1(B+1
If Ans<L1(B
Then
Ans->C
L1(B->L1(B+1
C->L1(B
End
End
End

Il parcourt la liste de haut en bas tout en permutant des termes consécutifs s'ils ne sont pas dans l'ordre croissant.
Ainsi le dernier terme à l'issue du premier parcours est le maximum.
Puis on recommence le même procédé pour les autres termes, mais pas jusqu'à la fin puisque la fin est déjà triée.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes