Je souhaite développer un petit algorithme qui me permettrait de "classer" une suite de nombres que je renseigne en fonction de la grille que je vous ai transmise ci-dessus.
L'algorithme permettrait entre autres de renseigner la valeur inférieure à celle qui a été saisie et afficher le résultat en séparant chaque valeur par une virgule.
Pour être plus parlant, voici quelques exemples :
Exemple n°1 :
Je saisis cette suite de nombres dans l'algorithme : 1793,1794,1795,1832,1796,1797,1798,1799
L'algorithme va se baser sur la suite de nombres (1) et afficher pour chaque valeur son nombre précédent dans la base de tri. Le résultat supprime les doublons et sépare chaque valeur par une virgule : 1790,1821,1831
Exemple n°2 :
Je saisis cette suite de nombres dans l'algorithme : 1340,1339,1338,1337,1336,1352,1351,1350,1349,1348,1358,1357,1356,1355,1354,1346,1345,1344,1343,1342,1807,1809,1811
L'algorithme va se baser sur la suite de nombre (1) et afficher pour chaque valeur son nombre précédent dans la base de tri. Le résultat supprime les doublons et sépare chaque valeur par une virgule : 1335,1341,1347,1353,1806,1808,1810
J'ai déjà commencé à me renseigner sur les algorithmes de tri mais il semble que ce que je recherche n'existe pas... :?
Cet algorithme me permettrait de gagner un temps considérable sachant que j'ai des milliers de lignes à trier. Je suis débutant en programmation et vous remercie d'avance pour votre aide !
27/05/2020, 12h20
el_slapper
Il s'agit de décomposer ton problème. Le principal truc que je vois, c'est que ta source de données n'est pas structurée. Ta cible non plus. C'est pour ça qu'il n'existe pas de fonction toute faite pour tout faire d'un coup. Il faut donc couper en morceaux.
Ton algo doit commencer par une structuration, façon fonction split, pour avoir tes nombres à travailler dans un tableau ou une collection (suivant le langage).
Ensuite la plupart des langages ont une fonction de tri integrée. A utiliser sans s'emmerder. Sous VBA, ça oblige à poser le tableau issu de split dans une feuille de calcul, puis à faire un sort.range. Ou alors se faire un tri à bulles soi-même. Pas très performant, mais pour quelques milliers d'entrées, devrait suffire.
Ensuite, il faut dédoublonner. Soit utiliser une fonction natives du langage, là encore, soit se faire un algorithme (tout bête une fois les données triées, on a un tableau/une collection de sortie, on lit ce qu'on vient de trier élément par élément, et on ne garde que si c'est différent du précédent)
Enfin, il faut reformater la chaîne avec des virgules. Lire chaque élément du tableau/collection, le concaténer dans la chaîne de sortie, rajouter une virgule, sauf si c'est le dernier.
Tous les langages connus savent faire ça. même le BF (que je déconseille fortement, si tu va lire des exemples, tu comprendras pourquoi). Mon lien de tri mène vers rosetta code, ou tu trouveras des exemples pour la plupart des étapes que je viens de décrire, dans un pacson de langages. Amuses toi bien.