Devenir membre club
Connectez vous
Aide & règlement
Votre 1ère visite
Le règlement
Contacter les admins
Contacter le webmaster
Questions & réponses
Comment soutenir CodeS-SourceS
Comment faire un lien vers CodeS-SourceS
Autres questions
A propos & don
A propos du réseau
Les modérateurs
Remerciements
Faire un don
Le livre d'or
Tous les livres
Les dernières parutions
Les plus consultés
Les critiques
Le top des ventes
Le top favoris des membres
Recevoir des livres blancs
Tous les thèmes
Les derniers messages
Les nouveaux messages
Poser une question
Le Chat - IRC
Tous les tutoriels
Ajouter un tutoriel
Les tutoriels en vidéo
Les formations vidéos
Tous les codes
Ajouter un code
Filtrer par catégorie
Filtrer par date
Les plus récents
Les mis à jour
Les codes par jour
Filtrer par niveau
Niveau débutant
Niveau initié
Niveau expert
Filtrer par type
Les codes avec capture
Les codes avec zip
Les codes .Net
Filtrer par qualité
Les plus populaires
Les plus populaires du mois
Les plus téléchargés
Les mieux notés
Top par catégorie
Top des favoris
Filtrer par auteur
Tous les auteurs
Le top des membres
Les snippets
Déposer votre CV
Consulter les offres d'emploi ou de stage
Consulter les CVs
Déposer une offre d'emploi ou de stage
Modèles de CV et lettres
Trouver une convention collective
Les écoles d'informatique
Toutes les écoles
Ajouter une école
Les outils
Outils pour développeurs
Trouver des ressources
Base de données de CodeS-SourceS
Télécharger les meilleurs logiciels
Comparer les prix
Envoyer des ecards
Création de bannières
Annuaire de la prog
Tous les sites
Ajouter votre site
Le dico de la prog
Toutes les définitions
Ajouter une définition
Les évènements
Tous les évènements
Les évènements à venir
Ajouter un évènement
Téléchargements
CodeS-SourceS Toolbox
CodeS-SourceS Toolbar
Toolbar pour FireFox
Fonds d'écran
Les compil's
Nos partenaires
Magazine Programmez
Frontier.fr
Xiti
ProgOnline
Winwise
Editions Eyrolles
Toute la liste
Les RFC
CS
VB, VB.NET
ASP.NET,ASP
C, C++
ColdFusion
PHP
Javascript
Delphi
Flash
Java
Graphisme
Irc
Assembleur
C#
Mobilité
SQL
Foxpro
Python
Regex
Flex
Windev
Ce site au démarrage
begin process at 2012 02 10 14:43:50
Accueil
Codes
Tutoriels
Forum
Livres
Emploi
Services
Connexion
Trouver un code source :
dans
Tout le site
Codes
Tutoriels
Forum
Blogs
Livres
RFC
Icones
News .NET
Boutique
[ Dernières recherches ]
Veuillez saisir votre recherche... Ex: smtp, lire un fichier, rs232
Options de recherche :
Tous les codes
Tous les codes en .Net
Tous les codes sauf .Net
Langages disponibles :
Tous les langages
ASP / ASP.NET
Assembleur
C / C++ / C++.NET
C# / C#.NET
ColdFusion
Delphi
Flash
Flex, Air, ActionScript
Foxpro
Graphisme
IRC
JAVA / J2EE
Javascript / Ajax / DHTML
PDA / PocketPC
PHP
Python
Regex, Regular Expression, Expression régulière
SQL
Visual Basic, VB6, VB.NET, VB 2005, VB
30 commentaire(s) de jmc70
sur des sources sur tout
CodeS-SourceS
Déposé sur
Tri par insertion
J'ai donc modifié le source à partir de l'idée de Galain qui m'a d'ailleurs envoyé un programme corrigé, ce dont je le remercie.
Si j'ai le temps je reprendrai l'algo de MichelPiesyk en l'adaptant aux listes (plus besoin de tableau) et en m'affranchissant du principe alphabétique, ce qui pourrait donner :
- dès qu'une liste atteint 32000 éléments, on la divise en deux listes en transférant la moitié des éléments dans la seconde (le point faible de l'algo !) ;
- on met à jour une table de hachage qui contient les premier et dernier élément de chaque liste ;
- lors d'un ajout, on cherche dans la table de hachage dans quelle liste doit aller le nouvel élément ;
- on vérifie qu'il n'y est pas déjà (sinon, doublon), puis on l'ajoute (en réalité, l'insère puisque la liste est automatiquement triée par sorted=true) ;
- etc.
Je pense néanmoins que le dernier algo qui est dans le source peut difficilement être dépassé (50000 éléments en 4 secondes) et je remercie tous les participants pour leurs idées.
Posté le :
20/03/2010 17:55:07
Déposé sur
Tri par insertion
@Billotmi
J'ai donc ajouté l'algo qui utilise une chaîne de caractères pour rechercher les doublons puis je la transforme en tableau que je trie par le QuickSort. Les performances restent cependant inférieures à l'algorithme d'origine. A la fin, la transformation en tableau par split() puis le Quicksort n'ont qu'un effet minime sur la performance(j'ai fait un essai en les supprimant, pour ne garder que la recherche des doublons) : visiblement, c'est la constitution de la chaîne puis la recherche par instr() qui prennent du temps.
Posté le :
15/03/2010 18:20:06
Déposé sur
Tri par insertion
@Billotmi
j'avais pensé au tableau fixe avec une variable correspondant au nombre d'éléments réels, variable incrémentée à chaque ajout. Or j'ai constaté que le Redim Preserve est vraiment peu gourmand en ressources car les différences de traitement sont négligeables de l'ordre de quelques secondes) :
- pour 10000 chaînes -> 5 sec au lieu de 6
- pour 30000 chaînes -> 41 sec au lieu de 42
- pour 50000 chaînes -> 94 sec au lieu de 96
comme on perd la souplesse du tableau dynamique, j'ai donc préféré conserver le redim preserve.
------
La méthode avec QuickSort est ici tout à fait anecdotique et c'était pour répondre @Galain car je ne l'ai ajoutée après coup (l'intérêt du tri par insertion est justement de se passer... d'un tri).
A vrai dire, le tri ici n'est utile que pour pouvoir effectuer une recherche dichotomique d'un éventuel doublon qui n'est possible... que lorsque le tableau est trié.
L'intérêt de l'algorithme que j'ai déposé ici vient du fait qu'il permet de connaître en une seule opération s'il s'agit d'un doublon (et dans ce cas de le traiter à part) ou sinon de récupérer l'indice d'insertion de l'enregistrement dans le tableau.
Le problème de la lenteur vient du "comment décaler un tableau vers le haut" rapidement. VB sait le bien le faire en quelques secondes quand on remplit une liste ou une combo triée jusqu'à 32000 éléments.
Maintenant, il n'y a peut-être pas d'autre solution que de patienter.
----------
L'utilisation de instr sur une chaîne de caractères semble prometteuse. J'ai fait simplement un essai avec :
a$ = String(40000, "12345") + "67890" + String$(10000, "12345")
MsgBox Str$(InStr(a$, "67890"))
et la recherche est pratiquement instantané. En générant une chaîne de 500 millions de caractères cela prend quelques secondes, l'élément à chercher se trouvant aux 9/10 de la chaîne ; au delà j'ai un message d'erreur pour mémoire insuffisante.
Si j'ai le temps, j'essaierai d'ajouter cet algo au programme (mais dans ce cas, il ne s'agira plus d'un tri - simplement une recherche des doublons, ce qui correspond d'ailleurs à mon problème initial).
Posté le :
15/03/2010 11:39:47
Déposé sur
Tri par insertion
J'ai mis le source modifié en ligne.
Je dois respecter une contrainte qui est que les doubles doivent être refusés d'entrée dans la liste (et non pas enlevés après le tri par une recherche des doubles). J'ai donc testé le QuickSort après chaque ajout d'enregistrement mais les performances sont nettement dégradées par rapport à l'idée d'origine car un QuickSort, tout récursif qu'il soit, reste nettement plus lent qu'un décalage séquentiel d'enregistrements vers le haut. J'ai consulté l'article de Wikipedia sur l'Introsort, mais ce n'est qu'une amélioration du Quicksort qui ne changerait rien au problème. Lequel reste posé - si quelqu'un a une idée.
A vrai dire j'ai réalisé ce petit programme pour un module de suppression des fichiers doublons sur un disque dur d'archives (même nom, date et taille parmi plusieurs centaines de milliers de fichiers - eh oui ! les archives s'accumulent au fil du temps et on duplique souvent des dossiers entiers alors qu'il n'y a qu'un fichier modifié dedans) : or il faut que le premier fichier trouvé soit considéré comme "le bon" et les autres comme des doublons à supprimer. Je peux mettre le programme en ligne si ça intéresse quelqu'un (mais je crois qu'on en trouve déjà sur Code Source).
Posté le :
14/03/2010 19:52:20
Déposé sur
Tri par insertion
Effectivement, un Quicksort est capable de trier 50000 éléments en moins de 2 sec, mais ce qui m'intéresse c'est de pouvoir stocker les doublons à part et j'ai du mal à gérer cela dans la recursivité du Quicksort. Je ne connais pas l'introsort et je vais faire quelques recherches car c'est peut-être la solution à mon problème (tester par dichotomie si l'élément est présent avant de lancer le tri récursif). Si j'ai le temps, je mettrai en ligne le source modifié. Merci donc à Galain et TarodMaster.
Posté le :
14/03/2010 17:34:35
Déposé sur
Volume master : etat volume windows - modifier le volume, le ...
Bonne source qui me sera utile. Très claire, bien commentée et facilement réutilisable. Merci.
Posté le :
01/09/2008 20:50:38
Déposé sur
Lister les pages de code supportées par windows
Je me demandais aussi à quoi correspondait cette liste des code de pages (la variable de type Long laissait entendre qu'il y en avait plusieurs milliers).
Pour le savoir, j'ai donc placé le code ci-dessus dans un module et le code ci-dessous dans une feuille sur laquelle se trouve un bouton Command1 et une liste Liste1 :
Private Sub Command1_Click()
Dim i As Long
Call f_CodePage_Init
For i = 0 To g_CodePageNbr - 1
Liste1.AddItem Str$(g_CodePageLst(i).Id) + " " + g_CodePageLst(i).Name
Next i
End Sub
S'affiche ainsi la liste des codes supportés (55 sur ma machine). Ce qui se présente comme ceci (pour les premiers) :
10000 MAC - romain
10006 MAC - grec I
10007 MAC - cyrillique
10010 MAC - Roumanie
10017 MAC - Ukraine
10029 MAC - latin II
10079 MAC - islandais
10081 MAC - turc
10082 MAC - croate
1026 IBM EBCDIC - Turque (Latin-5)
Posté le :
31/12/2007 10:38:45
Déposé sur
Comment afficher un curseur souris en couleur sans api
Merci pour cette astuce toute simple que je ne connaissais pas (pas plus que les fichiers de ressources - je pensais qu'il fallait avoir l'édition professionnelle de VB, mais ce n'est pas le cas).
Pour répondre rapidement aux deux précédents commentaires (tardivement, mais ça peut servir à d'autres), voici la démarche à suivre pour créer le fichier de ressources :
- depuis VB6, aller dans le menu Compléments/Gestionnaire de compléments puis charger l'Editeur de ressource VB6 ;
- aller dans le menu Projet/Ajouter un nouveau Fichier de ressources. Lui donner un nom et un emplacement de stockage. Pour l'instant, il est vide et il apparaît dans l'Explorateur de projet, dossier Documents associés ;
- il suffit de double cliquer sur son nom pour lancer l'éditeur de ressources et ajouter les curseurs (ou autres objets nécessaires) à partir des icones de la barre de menu de l'éditeur.
Tout cela est bien sûr détaillé dans l'aide et on le trouve facilement en tapant LoadResPicture pour la recherche.
Posté le :
14/08/2006 18:04:59
Déposé sur
Wspdf - classe de génération de fichier pdf ( sans ocx , ni i...
Excellent travail. Je voulais réaliser un petit générateur de formulaires en RTF, finalement, je l'ai fait en PDF en bénéficiant ainsi de la garantie de la restitution.
Evidemment, ce n'est pas très rapide, mais c'est incroyable ce qu'on peut réaliser en VB !
Une petite remarque : j'ai mis un certain nombre de variables d'entrée en Byval plutôt qu'en Byref. Cela permet d'utiliser, si on le souhaite, des variables entières plutôt que doubles dans le programme appelant.
Et en plus un suivi du projet est assuré depuis plusieurs années. Cela mérite vraiment 10/10
Posté le :
08/05/2006 18:51:02
Déposé sur
Création d'un arboressance
Le code de Zefri fonctionne bien si le chemin commence par une lettre de lecteur mais ce n'est pas le cas pour un chemin unicode du genre "\\Edmini\Share\" (disque dur distant par exemple - bon, je sais, on peut se connecter auparavant à un lecteur réseau pour déclarer une lettre de volume, mais j'aimerais faire sans)
Si quelqu'un a une solution...
Posté le :
12/01/2006 19:42:37
1
2
3
Nos sponsors
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3
par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article
par ROMELARD Fabrice
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !
par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article
par Vko
[FRAMEWORK 4] LES TASKS ET LE THREAD UI
[FRAMEWORK 4] LES TASKS ET LE THREAD UI
par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article
par fathi
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE
par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article
par JeremyJeanson
TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC
TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC
par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article
par ROMELARD Fabrice
La suite
RSS
Côté IT
Utiliser Office 365 pour un projet d?équipe - PART 2
Utiliser Office 365 pour un projet d?équipe - PART 1
SharePoint 2007 : Installation du Service Pack 3 de MOSS
SharePoint 2007 : Installation du Service Pack 3 de WSS V3
Installation de SQL Server DENALI CTP3
Mise à jour de Windows 2003 R2 vers Windows 2008 R2
Upgrade de SQL Server 2005 vers SQL Server 2008 R2
La suite
RSS
Offres d'emploi
Recherche Recherche développeur web ASP et ASP.Net
Recherche Analyste Programmeur Adélia
Recherche Développeur eZ Publish confirmé
Recherche AP (H/F) ACCESS EXCEL VBA
Recherche SUPPORT INFORMATIQUE / DEVELOPPEUR
Recherche Developpeur web
Recherche développeur Web
Déposer une offre
La suite
RSS
Formations Video
Coffret : Ateliers sur la mode
Atelier sur la mode : Motifs et matières
Atelier sur la mode : La planche tendance
Atelier sur la mode : De retour de pige et repérage
Corel Painter 12 : Les fondamentaux
Coffret : Microsoft Office 2010 de A à Z
De Microsoft Office 2003 à 2007 et 2010
La suite
RSS
Appels d'offres
Developpeur applications iphone - ipad - android
Budget :
800€
REPUBLICATION-Developpeur expert Joomla
Budget :
1 500€
URGENT-Conseil en architecture de site internet
Budget :
400€
La suite
RSS
Logiciels
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
Easy-Planning (1.0.0.1)
EASY-PLANNING (1.0.0.1)
Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ...
Cliquez pour télécharger Easy-Planning
COLLECTOR PLUS (3.00B)
COLLECTOR PLUS (3.00B)
COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par : - L...
Cliquez pour télécharger COLLECTOR PLUS
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.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
LettresFaciles 2011 (8.0.0.1)
LETTRESFACILES 2011 (8.0.0.1)
LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types. Son inte...
Cliquez pour télécharger LettresFaciles 2011
+ de logiciels à télécharger
Vidéos drôles
Halloween Party
Terry Tate Office Linebacker Superbowl 2003
Jeu vidéo instructif
C'est un véritable vol !
Banana Song
Comment attraper la grippe A
Parodie Pub Window 7
La suite
RSS
Sondage...
Votre navigateur n'utilise pas le javascript, pour
voter aux sondages de ce site, cliquez ici
Statistiques
1 873 284
membres
107
nouveaux aujourd'hui
16 151
membres club
Comparez les prix
Apple iPhone 4 Noir (32 Go)
Entre 1290€ et 1333€
Visiter le guide achat
CalendriCode
Février
2012
L
M
M
J
V
S
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Consulter la suite du CalendriCode
Photothèque
Visiter la photothèque
CS Tool Box