Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DATASET QUICKSORT


Information sur la source

Description

Fonction Servant a classer les Elements d'un Dataset a la maniere QuickSort
à partir d'un numero de colonne passé en parametre,
et pour une colonne contenant des entiers
 

Source

  • '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
  '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

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

pb de tri dans un dataset [ par fourtoo ] bonjour dans mon dataset se trouvent deux tables: "Logement" et "TypeLogement" lors de l'affectation des enregistrements de "Logement" dans un dataro Tri sur un FileInfo [ par gandalflegris007 ] Bonjour à tous,je souhaiterai savoir s'il est possible d'utiliser la méthode sort sur un tableau de FileInfo.En effet, je récupère la liste de tous le Tri par odre décroissant [ par code4free ] Bonjour, j'ai des gros tableaux plusieurs dizaines de milliers de lignes (&#224; plusieurs colones )que je trie par ordre croissant avec quicksort. J' problème de tri dans un flexgrid vb6 [ par thrill2 ] moi j'ai un probl&#232;me avec mon sort de mon flexgrid en vb6 a chaque foie que j'essaie de faire mon tri il me donne comme message d'erreur Method ' ADODC et sort [ par salem3 ] Bonsoirje suis entrain de développer une application en vb6.Cette application se connecte a une base de données sql serverla connexion se fait a l'aid VB6 Tri Excel [ par clad74 ] Bonjour le forum,j'ai un soucis de tri avec excel. J'ai déjà utilisé la fonction qui permet de trier mais bizarrement ça ne marche pas. Mystère.j'aime urgent aidez-moi plizz: vue d'une grille [ par tresore ] Bonjour,Je suis assez novice en VB et j'ai vraiment besoin d'un petit coup de pouce.Alors je développe sous VB6.Je fais un tri sur une grille et j'aim TRI QuickSort NON Récursif [ par us_30 ] Bonsoir,JE cherche sans trouver l'algorithme du QuickSort NON Récursif.En effet, sur GOOGLE on trouve une plétore de site présentant soit disant Quick probleme pour accéder a une base de donnée mysql [ par mickael56100 ] Bonjour j'utilise Easy Php2.0b1, avec Mysql 5.0.22, je souhaiterais réaliser un logiciel de gestion d'un club de football.J'ai télécharger un installe tri alphabétique [ par hjsnapo ] Bonjour,Existe-t-il un software dans le commerce ou online permettant dans des fichiers Access volumineux d'obtenirun tri alphabétique effectif comme


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,718 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.