Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » trier une liste
Alkass2 Hors ligne Membre Points: 216 Défis: 0 Message

trier une liste

Posté le 17/04/2014 12:36

Bonjour tour le monde,
Existe-t-il une fonction pour trier dans l'ordre croissant ou decroissant une liste?
Merci d'avance


1, 2 Suivante
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 12:39 | #


SortD(List L)

Il doit y en avoir une autre aussi.
Tu peux l'avoir avec [SHIFT]+[F4] qui contient une liste de toutes les fonctions Basic.

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 17/04/2014 12:41 | #


Si tu es dans le menu stats, va dans "tool" [F6] [F1], SRT-A ([F1]) te permet de trier dans l'ordre croissant, et SRT-D ([F2]) dans l'ordre décroissant.
Après si c'est dans un programme, c'est les fonctions SortA( et SortD(
EDIT: grillé
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 17/04/2014 12:47 | #


Existe-t-il une fonction qui permet de trier juste une partie de la lise ? genre
SortD (List 1[2,5])

Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 12:51 | #


Peut-être
SortD(List 1,2,5)

mais franchement, je ne pense pas.
Et puis, cette notation entre crochets c'est celle des matrices.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 17/04/2014 12:51 | #


nan regarde :
List 1[A]→B

Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 12:52 | #


Non, je disais
Mat A[2,3]

Avec la virgule.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alkass2 Hors ligne Membre Points: 216 Défis: 0 Message

Citer : Posté le 17/04/2014 13:26 | #


Commet ajouter une valeur dans une liste sans en effacer le contenu?
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 13:32 | #


V->List 1[Dim List 1+1]

devrait fonctionner.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alex_1186 Hors ligne Membre Points: 1215 Défis: 46 Message

Citer : Posté le 17/04/2014 18:11 | #


Darkysun Non je ne pense pas qu'on puisse trier une partie d'une liste. Mais après on peut trouver des feintes: genre recopier tes valeurs à trier dans une autre liste, la trier, puis recopier les valeurs triées dans la liste de départ!
Ou, plus économe, trier directement les valeurs, sur place et "à la main"!
Avec un petit algorithme genre le tri à bulles, c'est pas bien compliqué, je t'expliquerai si tu veux.
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 18:16 | #


Tri à bulles ?
Tu sais (au moins) aussi bien que moi que la complexité de cette algorithme est O(n) = n^2, absolument impraticable sur des longues listes, encore moins avec le Basic Casio.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 17/04/2014 18:30 | #


Longue = au moins 10000 entrées
Bon, après c'est en C, mais en Basic, tant que t'en a moins que 10, ça reste convenable.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 18:34 | #


Tu parles, il suffit de 100 entrée pour que 10'000 manipulations soient trop longues pour la calculatrice.
Au moins utiliser le tri rapide, qui nous réduit à 1000 opérations.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 17/04/2014 18:36 | #


Après, ça s'optimise le tri à bulle.
Mais oui, je disais ça pour le natif.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Alex_1186 Hors ligne Membre Points: 1215 Défis: 46 Message

Citer : Posté le 17/04/2014 20:37 | #


Lephenixnoir Alors déjà pour 100 termes tu as seulement 5000 opérations à peu près, et je suis d'accord, ce n'est pas ce qu'il y a de plus efficace!
Oui je disais ça comme ça, mais c'est parce que le tri rapide (tu parles du Quicksort je suppose) est bien plus compliqué à implémenter!!! (surtout en impératif)

Donc ça dépend du nombre d'éléments effectivement. Si Darkysun n'en a pas plus de 10 à trier ça va, après s'il a des bases de données qui occupent les 20 listes remplies à bloc, plus les matrices, là faudra optimiser un peu!
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 20:41 | #


Oui, je parle bien du quicksort, cette merveille qui existe, entre nous, par défaut dans la bibliothèque standard du C.

Et, dis-moi si je me trompe, mais je croyais que
-> Tri bulles: O(n) = n^2
-> Tri rapide: O(n) = n*sqrt(n)
?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alex_1186 Hors ligne Membre Points: 1215 Défis: 46 Message

Citer : Posté le 17/04/2014 21:01 | #


Alors il y a un petit problème de notations!
Tri à bulles: O(n^2)
Quicksort: O(n* log(n))

Tu ne peux pas écrire O(n) comme ça, ce n'est pas la bonne notation! Tu dois écrire O( [ta complexité en fonction de n] ).

Mais à part ça oui c'est bien ça! Seulement il y a des constantes devant, ça ne fait pas exactement n^2 opérations. Exemple, le tri à bulle fait en fait n*(n+1)/2 opérations (en pire cas), d'où mon 5000 (5050...).
Et puis le tri rapide est inefficace en pire cas, il est quadratique si la liste est déjà presque triée par exemple.
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 21:03 | #


Oups !
Je ne me suis par servi des ces notations depuis longtemps... ^^'

Je ne pensais pas que le tri rapide était moins rapide si le liste était déjà triée.
Au contraire, on aurait tendance à penser le contraire, qui est par ailleurs vrai pour le tri bulle.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alex_1186 Hors ligne Membre Points: 1215 Défis: 46 Message

Citer : Posté le 17/04/2014 21:09 | #


Oui, ça dépend des algorithmes, on donne en général la complexité en moyenne.
En moyenne, si la liste est à peu près "uniformément détriée", le Quicksort est en O(n*sqrt log(n)), mais si elle est déjà triée, il va:
- prendre le premier élément comme pivot, faire deux tas, l'un avec ceux inférieurs (ici vide!) et un avec ceux supérieurs au pivot (toute la liste!), et ça du coup n-1 fois dans notre cas, du coup, 1+2+3+...+n-1 = (n-1)*n/2 = O(n^2).

Sinon il y a le Mergesort, le tri par fusion, qui est en O(n*sqrt log(n)) en pire cas mais qui a une plus grosse constante devant, donc qui est moins efficace que le Quicksort en moyenne...
Donc bref, il faut voir au cas par cas, il n'y a pas de recette miracle!

Ajouté le 17/04/2014 à 21:22 :
EH qu'est-ce que je dis?! C'est O(n LOG n)!!!
désolé...
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/04/2014 21:27 | #


Ah oui, c'est encore mieux !
Bien puissant cet algorithme, il faudra que j'y jette un coup d'oeil.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 17/04/2014 21:41 | #


Sinon il y a celui dont parlait Smash' l'autre jour en O(n) en complexité temporelle mais assez horrible en spatiale dans certains cas
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 66 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd