Accueil > Forum > > > > Parcours de tableau
Parcours de tableau
mardi 20 mars 2007 à 18:54:52 |
Parcours de tableau

racine
|
Bonjour, Je recherche une méthode me permettant de rechercher dans un tableau de numériques , une suite particuliere de valeur. Mon tableau fait plusieurs millions d'enregistrements, la recherche élément par élément est un peu lente. ex : 1,0,0,1,1,1,0,1,1,1,1 je cherche 3 fois 1 de suite reponse : indice de départ = 4 ( 1,0,0, 1,1,1,0,1,1,1,1) Merci, Olivier
|
|
mardi 20 mars 2007 à 19:08:57 |
Re : Parcours de tableau

BruNews
|
Faut prendre l'habitude d'indexer en base 0, ton indice sera donc 3.
Un index indique l'offset de décalage rapport à l'adresse base, un index 0 indique donc bien le 1er élément.
ciao... BruNews, MVP VC++
|
|
mardi 20 mars 2007 à 19:11:39 |
Re : Parcours de tableau

mortalino
|
Salut, en gros, ça devrait faire ça : Dim TabARechercher(3) As Long, StartIndice As Long Dim MonTableau() As Long, i As Long
TabARechercher = Array(1, 1, 1) MonTableau = Array(1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1)
For i = LBound(MonTableau) To UBound(MonTableau) - 3 If TabARechercher(0) = MonTableau(i) And TabARechercher(1) = MonTableau(i + 1) And TabARechercher(2) = MonTableau(i + 2) Then StartIndice = i: Exit For End If Next i
Erase TabARechercher Erase MonTableau
 ~ Mortalino ~ Colorisation automatique@++
--Mortalino-- Le mystérieux chevalier, "Provençal, le Gaulois" /DIV>
|
|
mardi 20 mars 2007 à 19:13:10 |
Re : Parcours de tableau

mortalino
|
Ah et je confirme que suite à ce que dit BruNews, je suis bien en base 0 et StartIndice sera donc égal à 3 @++
--Mortalino-- Le mystérieux chevalier, "Provençal, le Gaulois" /DIV>
|
|
mardi 20 mars 2007 à 19:52:48 |
Re : Parcours de tableau

jmfmarques
|
Je vois mal comment ne pas parcourur tous les éléments du tableau (celà me parait inévitanle)
Je vois par contre une possibilité de gagner en temps.
au lieu de comparer à 1 (donc une condition à chaque fois) : additionner ---
quelque chose du genre (îci je recense tous les départs d'occurrence dans une listbox, juste pour y voir clair)
Private Sub Command1_Click() MonTableau = Array(1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) n = 0 For i = 0 To UBound(MonTableau) - 1 If MonTableau(i) > 0 Then n = n + 1 Else n = 0 End If If n = 3 Then List1.AddItem i - 2 n = 0 End If Next End Sub
C'est juste une idée et :
1) je n'ai pas testé n comparaison de temps 2) elle est surement perfectible
|
|
mardi 20 mars 2007 à 20:36:59 |
Re : Parcours de tableau

BruNews
|
Prends exemple sur ce qui t'a été donné plus haut par mortalino et jmfmarques. Si vraiment tu bosses sur des tableaux de millions d'elems, ça risque fort de rester assez lent faute au "MonTableau(i)", l'accès aux elems par indexation est une calamité depuis vb en terme de performance. Pour perfs incomparables, il te faudra compiler une dll C qui accèdera direct à la mémoire du tableau, tu devrais atteindre un benef facteur 10 minimum. Exemple ici: http://www.vbfrance.com/code.aspx?ID=33938ciao... BruNews, MVP VC++
|
|
mercredi 21 mars 2007 à 09:30:04 |
Re : Parcours de tableau

racine
|
Effectivement, il est difficile de ne pas parcourir le tableau. d'autant plus que l'exemple ennoncer est incomplet. en réalité il serait plutot comme suit : MonTableau1 = Array(1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) MonTableau2 = Array(1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) MonTableau3 = Array(1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) je doit trouver l'endroit ou j'ai 3 fois 1 de suite dans l'ensemble de mes tableau (l'ensemble des tableaux doit approcher le million d'éléments) resultat : MonTableau1 = Array(1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) MonTableau2 = Array(1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) MonTableau3 = Array(1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) merci pour le tuyau, je vais assayer en effectuant des additions A+
|
|
samedi 26 mai 2007 à 09:08:13 |
Re : Parcours de tableau

MAXIMO71
|
dim res (1 to 10000) as boolean Max=UBound(MonTableau1) for i = 0 to Max MonTableau4(i)=MonTableau1(i)+MonTableau2(i)+MonTableau3(i) next i for i = 0 to Max if MonTableau4(i)=3 and MonTableau4(i+1)=3 and MonTableau4(i+2)=3 then res( i+1) = true next i tu obtient ainsi la liste des résultats dans un tableau donc l'index de base est 1 ce qui te simplifie la tâche je pense. Pour ce qui est de l'accélération si le nombre d'occurance de ton tableau est fixe, il est possible d'utiliser dans la boucle de recherche des multiples de i ce qui va augmenter le nombre de tests par tour de boucle ce qui peut être plus rapide. next i MAXIMO71  PS Si la réponse vous satistait pensez à la valider
|
|
Cette discussion est classée dans : élément, recherche, tableau, parcours
Répondre à ce message
Sujets en rapport avec ce message
recherche dans un tableau [ par pmunger ]
J'ai un tableau contenant des String. Je veux savoir si une chaîne est présente dans ce tableau. Existe-t-il une fonction qui fait cela ou bien le s
VB6 Recherche d'élément dans un Tableau [ par JeffC1977 ]
Salut à tous....J'utilise un tableau... et j'aimerais être capable d'aller chercher de l'information dans ce tableau... mais je n'y arrive pas...Mon c
Recherche d'un élément dans une Liste [ par Morpheus7914918 ]
Bonjour, Votre site m'a été conseillé. J'ai un tout petit pb en VB (sous Excel). Je cherche la fonction (je suis quasiment persuadé qu'elle existe) qu
Recherche directe dans un dataset [ par TrafMaxime ]
Salut les pros de la prog,Dans une option 'statistique' de mon programme, je parcours les ventes dans une portion de date, pour un type d'appareil et
excel [ par didier.007 ]
j ai besoin de quelques lignes de programations et je ne sais pas faire.Pourriez vous m'aider ?A savoir :inserer un programme VB dans excel.une foncti
Dimsension tableau [ par nevil ]
Alors voila, je traite une base de données excel contenu dans un tableau.Quand je fé mes recherche, je recherche de A1 juska Z10000 comme ca je suis s
accés aléatoire à un élément d'un tableau [ par hela_bouks ]
Bonjour, Je voudrai savoir s'il existe une instruction me permettant de choisir aléatoirement un élément d'un tableau(unidimensionnel. En fait ce que
accés aléatoire à un élément d'un tableau [ par hela_bouks ]
Bonjour, Je cherche une instruction me permettant d'accéder aléatoirement à un élément d'un tableau unidimensionnel. Mon but est de de permuter deux é
macro excel - recherche dans un tableau [ par tibss ]
Salut tout le monde, <img titl
Comment effectuer la lecture de chaque élément d'un tableau [ par emarck ]
Bonsoir, J'ai déclarer un tableau sans spécifier sa longeur et je fais un Redim preserve afin de le réajuster à chaque fois que j'ajoute un élémen
Livres en rapport
|
Derniers Blogs
SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|