Bonjour,
En voyant les autres titres de post dans ce forum j'ai l'impression de poser une question bête ^^ (certaines j'ai même pas compris le titre)
Bref, j'ai un souci avec un algo concernant une liste de valeurs.
Grosso modo, j'ai une liste d'éléments associé à une valeur qui viennent d'une base de données. La valeur correspond à l'ordre de l'élément :
[1,objet1],[2,objet2],[3,objet3],[4,objet4],[5,objet5]
Je propose une action via une interface Web pour réordonner mes éléments, l'utilisateur choisis l'objet 5 par exemple et le place en début de liste :
[1,objet5],[2,objet1],[3,objet2],[4,objet3],[5,objet4]
=> la valeur de l'objet 5 est passé à 1 et tout les autres ont été incrémentés de 1
Ca marche, mais c'est lent. En effet à chaque fois qu'on réordonne un élément, il faut prendre tout les objets entre celui choisi et sa nouvelle position et incrémenter leur valeur.
Le fait de modifier la place d'un élément est couteux.
Du coup je cherche s'il y a d'autres algo possibles :
- diminuer le nombre de permutations nécessaires en ayant des trous entre mes valeurs, du coup plutot que d'incrémenter mes valeurs je vais seulement en incrémenter quelques unes pour remplir mes trous
[10,objet1],[20,objet2],[30,objet3],[40,objet4],[50,objet5]
[9,objet5],[10,objet1],[20,objet2],[30,objet3],[40,objet4]
=> aucune permutation, j'ai trouvé une place libre en première place
(mais comment trouver cette place libre et que faire s'il n'y en a pas.)
- autre chose ?
Si vous avez des pistes sur ce type de problème ca m'intéresserait.
a+
Partager