Les Snippets

Connexion

Tri de nombres

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 18/07/2007 17:00:30 et initié par JMO [Liste]
Date de mise à jour : 24/06/2008 12:51:07
Vue : 10606
Catégorie(s) : Algorithme
Langages dispo pour ce code :
- VBScript
- Javascript
- C, C++
- VB 2005, VB.NET 1.x
- C# 2.x
- VB6, VBA
- ObjectiveCaml
- ObjectiveCaml
- Voir tous les langages pour ce code snippet



Langage : VB6 , VBA
Date ajout : 10/12/2007
Posté par us_30 [Liste]
DateMAJ : 11/12/2007

Sub QSort(t() As Long, Deb As Long, Fin As Long)
'TRI QUICKSORT RECURSSIF (TRI RAPIDE)

'Déclaration des variables
Dim i As Long         'indice
Dim j As Long         'indice
Dim X As Long         'valeur pivot
Dim Temp As Long      'Valeur temporaire


'Algo Tri
i = Deb   'sauve le début
j = Fin    'sauve la fin
X = t((i + j) \ 2)  'valeur pivot

Do
  Do While t(i) < X: i = i + 1: Loop 'recherche par la bas
  Do While t(j) > X: j = j - 1: Loop 'recherche par le haut

  If i <= j Then
    Temp = t(i)     'inversion t(i) et t(j)
    t(i) = t(j)
    t(j) = Temp
    i = i + 1       'Passe au suivant
    j = j - 1
  End If

Loop Until i > j

If j > Deb Then QSort t(), Deb, j   'trie par le bas
If i < Fin Then QSort t(), i, Fin   'trie par le haut

End Sub



Sub Test_Tri() 'PROGRAMME DE TEST 'Nb D'ELEMENTS Dim Nb As Long Nb = 10000 'Déclarations ReDim Tableau(Nb) As Long Dim t As Long Dim temps As Single 'LISTE ALEATOIRE Randomize Timer For t = 0 To Nb Tableau(t) = Int(Rnd * Nb) Next t 'LANCE TEST temps = Timer QSort Tableau(), 0, UBound(Tableau) Debug.Print Timer - temps End 'Vérification du tri For t = 0 To Nb     If t Mod 10 = 0 Then Debug.Print     Debug.Print Tableau(t); Next t End Sub
Remarque :
Cet algorithme QUICKSORT se révèle (et de loin) le plus rapide dans tous les cas, même quand la liste est quasiment triée, contrairement à ce qu'on peut lire parfois. Faites l'expérience avec Tableau(t) = t !

Snippets en rapport avec : Tri, Nombre, Croissant, Décroisant



Codes sources en rapport avec : Tri, Nombre, Croissant, Décroisant

{Visual Basic, VB6, VB.NET, VB 2005} TRI COMPLEXE SUCCESSIF MULTI OPTION AVEC UNE MSHFLEXGRID
Tri complexe, rapide et simple à l'aide d'une MshFlexGrid. 4 colonnes successives possible : par exe...

{PHP} TRIE ET FILTRE UNIVERSEL DE REQUÊTES DANS UN FORMULAIRE À PARTIR DE SES CONTRÔLES
Voici un script, composé d'un fichier d'inclusion et d'une page de déclaration de variables, qui per...

{PDA / PocketPC} TRI D'UN TABLEAU DE VALEUR DANS L'ORDRE CROISSANT
Petit bout de code sans aucune prétention, pour que le site possède des algorithmes types, au mi...

{Visual Basic, VB6, VB.NET, VB 2005} CHIFFRE EN LETTRE FONCTION
Une petite fonction simlpe pour transformer un chiffre en lettre. Exemple: "15193" >> dix ...

{Visual Basic, VB6, VB.NET, VB 2005} GESTION DE LISTES (FUSION, COMPARAISON, TRI...)
Je manipule pour le boulot des fichiers. Par centaines, voire plus. J'ai souvent des listes de fich...

{Visual Basic, VB6, VB.NET, VB 2005} XPLISTVIEW
Il s'agit là d'un portage d'une source C# en VB.Net Voici donc une ListView améliorée : - Pos...

{C / C++ / C++.NET} LE QUICKSORT NON-RECURSIF ET L'IMPACT DE L'INSERTIONSORT SUR SES PERFORMANCES
Je depose cette source en rapport avec une discussion sur les performances du tri rapide (quicksort)...

{Visual Basic, VB6, VB.NET, VB 2005} LISTE DES EMAILS, NUMÉRO DE TÉLÉPHONNES DES TRAVAILLEURS
Cette source propose une manière simple de rechecher le numéro de telephone fixe ou mobile d'un coll...

{Visual Basic, VB6, VB.NET, VB 2005} TRI BOYERMOORE
Ce prohramme recherche un mot dans un texte txt selon l'algorithme boyer moore il ne trouvera que le...

{C# / C#.NET} LISTVIEW : TRI MONO OU MULTICOLONNES PROGRAMMÉ OU PAR CLICK DE COLONNE TENANT COMPTE DU TYPE DE DONNÉES À TRIER
Ayant pas mal cherché des sources pour faire des tris de colonnes de ListView, j'ai réalisé mon gest...