bguihal
Messages postés17Date d'inscriptionjeudi 19 octobre 2000StatutMembreDernière intervention23 août 2005
-
19 juil. 2002 à 10:36
cs_Charlie
Messages postés110Date d'inscriptionjeudi 9 mai 2002StatutMembreDernière intervention11 mars 2010
-
23 juil. 2002 à 20:43
voila mon probleme. j'ai un tableau (environ 400 elements ayant toutes un prix), j'ai un montant. je voudrais trouver la somme des prix qui se rapproche le plus du montant
exemple : j'ai 400f
piece1:100
piece2:50
piece3:20
piece4:200
piece5:320
donc la il faudrai que je prenne les pieces 2,3,5
ce qui va tombe a 390
il faut sans doute que je classe mes pieces.
j'ai trouver un algo mais il me fait si j'ai 400 pieces 400! posibilitées ce qui fait un peu beaucoup.
voila ,merci de votre aide.
cs_Charlie
Messages postés110Date d'inscriptionjeudi 9 mai 2002StatutMembreDernière intervention11 mars 20101 21 juil. 2002 à 17:05
Allo...
Laisse moi 1 jour ou 2...
J'ai vu ca dans mes cours de C++.
Y'a moyen de trier des tableaux d'une manière plus performante qu'une boucle for! Je vais l'essayé mais le principe de base est de séparer le tableau en petit bloc et le trier ainsi. Ca permet d'avoir un nombre de possibilité inférieur au nombre total d'élément. Mais le hic avec le VB, c'est que ca utilise la récursivité. Et en VB, c'est pas bien bien sont fort! Alors, je vais vérifier ca en fin de semaine!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Charlie
Messages postés110Date d'inscriptionjeudi 9 mai 2002StatutMembreDernière intervention11 mars 20101 23 juil. 2002 à 14:19
non non non... C'est pas compliqué a faire... Mais je viens de me rendre compte que comme mon code viens du C, il n'est pas compatible VB. VB n'est pas assez puissant en récursivité pour y parvenir... Mon algo fonctionne mais seulement avec les petits tableaux... un de 100 éléments par exemple... ca plante royalement!!! Reste qu'en C... c'est puissant!!! Par évident sur le coup mais super cool quand tu comprends le principe.
While (i < j)
'Conserver les éléments les plus petits ou égaux au pivot à gauche
Do
i = i + 1
Loop While (Tableau(i) < Pivot)
Do
j = j - 1
Loop While (Tableau(j) > Pivot)
'Permuter les éléments qui n esont pas à leur place
If (i < j) Then
Tempo = Tableau(i)
Tableau(i) = Tableau(j)
Tableau(j) = Tempo
End If
Wend
Partition = j
End Function
Voici un 2e Algo de trie que qq a mis sur le forum...
' Algorithme de tri "shell" sur un tableau Total(Maximum)
Dim i As Integer, j As Integer, k As Integer, l As Integer, Provi As même chose que Total
k = 1
While k <= Maximum
k = k * 2
Wend
Do
k = (k - 1) \ 2
If k = 0 Then Exit Do ' tri terminé
For l = 1 To Maximum - k
i = l
Do
j = i + k
If Total(i) > Total(j) Then Exit DoProvi Total(i): Total(i) Total(j): Total(j) = Provi
i = i - k
Loop While i > 0
Next l
Loop
cs_Charlie
Messages postés110Date d'inscriptionjeudi 9 mai 2002StatutMembreDernière intervention11 mars 20101 23 juil. 2002 à 20:43
mon ami m'a dit que le plus simple... tu te fait une liste bidon...
Tu copie tout dans la liste, tu te sert de ses options de trie et par la suite... tu rapatries tes données... Dans certains cas, ca peut etre pratique car les listes ont plusieurs mode de trie et peut-être des filtres en plus...
Mais mon code de C, on voit ca dans mon cours de Génie Électrique a l'université!