Soyez le premier à donner votre avis sur cette source.
Snippet vu 11 708 fois - Téléchargée 31 fois
'Function Quicksort de Tri Rapide a partir de Champ d'entiers Public Function intQsort(ByVal g As Integer, ByVal d As Integer, ByRef DT As DataTable, ByVal int_Champ As Integer) As Boolean Dim int_Deb, int_Fin As Integer 'Bornes du Tableau Dim i, m As Integer 'Champs Temporaires du dataset Dim int_IdTemp, int_IdBaseTemp, int_IdTypeTemp As Integer Dim Str_NomTemp As String m = g 'On Considere le Point g element gauche du tableau comme Pivot rem: il pourrait etre plsu optimisé de le prendre aleatoirement 'm : curseur suivant l'empilement des elements deplacés If g < d Then 'Condition d'arret du QuickSort 'on place a droite tout les elements inferieur au pivot et a gauche tout ce superieur au pivot For i = g + 1 To d If CInt(DT.Rows.Item(i).Item(int_Champ)) < CInt(DT.Rows.Item(g).Item(int_Champ)) Then 'alors Inferieur au pivot 'Placement à Gauche m += 1 int_IdTemp = DT.Rows.Item(m).Item("ID") int_IdBaseTemp = DT.Rows.Item(m).Item("Base") int_IdTypeTemp = DT.Rows.Item(m).Item("Type") Str_NomTemp = DT.Rows.Item(m).Item("Nom") DT.Rows.Item(m).Item("ID") = DT.Rows.Item(i).Item("ID") DT.Rows.Item(m).Item("Base") = DT.Rows.Item(i).Item("Base") DT.Rows.Item(m).Item("Type") = DT.Rows.Item(i).Item("Type") DT.Rows.Item(m).Item("Nom") = DT.Rows.Item(i).Item("Nom") DT.Rows.Item(i).Item("ID") = int_IdTemp DT.Rows.Item(i).Item("Base") = int_IdBaseTemp DT.Rows.Item(i).Item("Type") = int_IdTypeTemp DT.Rows.Item(i).Item("Nom") = Str_NomTemp End If Next 'on place le pivot a la fin des elements modifiés puisque celui ci est plus grand que les elements deplacés int_IdTemp = DT.Rows.Item(m).Item("ID") int_IdBaseTemp = DT.Rows.Item(m).Item("Base") int_IdTypeTemp = DT.Rows.Item(m).Item("Type") Str_NomTemp = DT.Rows.Item(m).Item("Nom") DT.Rows.Item(m).Item("ID") = DT.Rows.Item(g).Item("ID") DT.Rows.Item(m).Item("Base") = DT.Rows.Item(g).Item("Base") DT.Rows.Item(m).Item("Type") = DT.Rows.Item(g).Item("Type") DT.Rows.Item(m).Item("Nom") = DT.Rows.Item(g).Item("Nom") DT.Rows.Item(g).Item("ID") = int_IdTemp DT.Rows.Item(g).Item("Base") = int_IdBaseTemp DT.Rows.Item(g).Item("Type") = int_IdTypeTemp DT.Rows.Item(g).Item("Nom") = Str_NomTemp 'le pivot est a la bonne place, on repete l'operation pour les elements de gauche et ceux de droite par rapport au curseur m 'quick sort a Gauche If intQsort(g, m - 1, DT, int_Champ) = False Then intQsort = False Exit Function End If 'quickSort a Droite If intQsort(m + 1, d, DT, int_Champ) = False Then intQsort = False Exit Function End If End If intQsort = True End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.