Accueil > > > TRI PAR INSERTION
TRI PAR INSERTION
Information sur la source
Description
Les listes triées sont très pratiques pour des quantités de données limitées : une liste semble pouvoir contenir plus de 32767 éléments (il faudrait les compter pour être sûr, en tout cas, on n'a pas de message d'erreur) mais liste.listcount retourne systématiquement un nombre signé codé sur 16 bits, donc compris entre -32768 et +32767 ce qui rend les éléments excédentaires inaccessibles. Pour traiter de grandes quantités de données on doit donc recourir à un tableau. Le plus simple consiste à trier le tableau au fur et à mesure de sa création, ce qui équivaut à un tri par insertion. La limite théorique est alors d'un peu plus de 2 milliards d'items.
Conclusion
Cet exemple est destiné aux débutants et permet de se familiariser avec les tableaux dynamiques (dim, redim, preserve, ubound, erase...) Le temps de traitement qui passe, sur ma vieille machine, de 6 sec pour 10000 chaînes à 96 sec pour 50000 augmente plus vite que le nombre d'éléments à traiter. Cela vient du fait qu'il faut décaler vers le haut un certain nombre d'éléments à chaque insertion. Une optimisation doit être possible à ce niveau et m'intéresserait.
Historique
- 14 mars 2010 19:38:53 :
- J'ai ajouté un second algorithme : recherche du double dans la liste, si absent, ajout de l'enregistrement puis QuickSort. Malheureusement, les performances sont nettement moins bonnes avec 249 sec au lieu de 6 sec pour 10000 chaînes à traiter, la contrainte étant que les doubles ne peuvent pas être enlevé après coup (ils doivent être refusés d'entrée).
- 15 mars 2010 18:12:53 :
- suite à la remarque de BILLOTMI on utilise la fonction instr() pour tester la présence d'un élément dans une chaîne si l'élément n'est pas dans la chaîne, on l'ajoute à la chaîne sinon on le met dans la liste des doublons. A la fin, on transforme la chaîne en tableau avec split() et on trie le tableau (une seule fois donc) avec le QuickSort
Les performances restent cependant inférieures à l'Algo d'origine :
- pour 10000 chaînes, 8 sec au lieu de 6
- pour 20000 chaînes, 30 sec au lieu de 20
- pour 30000 chaînes, 63 sec au lieu de 42
- pour 40000 chaînes, 107 sec au lieu de 67
- pour 50000 chaînes, 162 sec au lieu de 96
- 20 mars 2010 14:45:13 :
- Plusieurs algorithmes peuvent être testés suite aux remarques faites dans Code Source
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Tri dans un tableau? [ par Georges ]
Voilà mon problème: J'ai un tableau à 1 dimension assez grand (+ de 3000 éléments) contenant des valeurs numériques. Je voudrais pouvoir sortir le
tri d'un tableau avec type [ par mat6 ]
je cherche à trier un tableau de type T comprenant 2 attributs A1(Byte) et A2(Integer).Le tri doit s'effectuer par ordre décroissant des valeurs de A2
Edition de page HTML [ par laglisse ]
Salut, dans le cadre d'un projet info je dois creer un editeur simple de page html avec insertion d'image et de tableau.Je recherche donc a cette fin
Edition de page HTML [ par laglisse ]
Salut, dans le cadre d'un projet info je dois creer un editeur simple de page html avec insertion d'image et de tableau.Je recherche donc a cette fin
Tri par ordre alphabétique d'un tableau [ par sankukai ]
Bonjour à tous,Soit un tableau tout bete declare comme suit :Dim tableau() as StringJe le rempli avec des valeurs, et je voudrais ensuite trier les v
tri dans un tableau [ par sash ]
Salut à tous.Voilà mon problème : j'ai un sstab avec 4 onglets. Dans 3 des onglets,j'ai un datagrid relié un contrôle adodc relié à une bdd access.Dan
tri de tableau à 2 dimensions [ par ElMagnifico ]
Bonjour!Voila j'ai un tableau dynamique de type String à deux dimensions et j'aimerais le trier dans l'ordre alphabétique de la première colonne (0)..
Insertion d'une nouvelle ligne dans un tableau [ par sharky ]
Débutant qui débute :)tout est dans le titre, j'ai un tableau à deux dimension qui contient 2000 lignes et 8 colonnes et j'aimerai ajouter une ligne
tri sur quatre colonnesavec lien entre elles [ par kyo.ced ]
bonjour, je vous explique, je débute en VBA. Je souhaiterai tri un tableau. Dans ce tableau, il y a quatre colonne et un nombre infini de lignes. Une
Tri tableau Excell avec VB [ par jeromepol49 ]
Comment utiliser la fonction de tri alphabétique "a z" d'Excell à partir de VB?
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc 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
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
|