IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Tri sur grosses volumétries


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut Tri sur grosses volumétries
    Hello,

    je voulais savoir, parmi tous les algorithmes de tri élaborés à ce jour, lequel serait le plus adapté pour une grosse volumétrie (>10 millions d'entrées). Ces entrées sont sur un fichier, et le langage est le C. La sortie doit être en fichier aussi.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Vu la taille, je commencerais par splitter le fichier et trier chaque partie (en mémoire, avec un quicksort), puis ensuite construire le fichier final trié.

  3. #3
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    d'accord.

    mais comment trier ensuite entre elles les sous parties?

    et comment splitter un gros fichier? (sous unix)

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par crashtib Voir le message
    mais comment trier ensuite entre elles les sous parties?
    Par exemple, si chaque partie triée est stockée dans un fichier différent (part-xxxx), tu lis la premiere entrée de chaque fichier. La plus petite entrée est insérée dans le fichier final et tu avances d'un cran de la fichier part-xxxx dont est issue l'entrée

    part-A = 2,3,5,6
    part-B = 1,5,7,9
    part-C = 4,6,8,9
    final = (vide)

    etape 1 : entreeA = 2, entreeB = 1, entreeC = 4
    => minimum : entréeB = 1
    => ajouter dans final : "1"
    => on avance dans le fichier part-B

    etape 2 : entreeA = 2, entreeB = 5, entreeC = 4
    => minimum : entréeA = 2
    => ajouter dans final : "2"
    => on avance dans le fichier part-A

    etc.

    et comment splitter un gros fichier? (sous unix)
    Bonne question. faut aller voir sur le forum adequat.

  5. #5
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    je te remercie de tes réponses éclairées. en plus ça va me faire bosser :youpi: .

    bonne fin de journée à toi

  6. #6
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    heu, sinon un bon gros sort bien gras sur unix? comme on dit un informaticien c'est fénéant...?

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par crashtib Voir le message
    heu, sinon un bon gros sort bien gras sur unix? comme on dit un informaticien c'est fénéant...?
    C'est aussi une possibilité, mais ca n'a plus de rapport avec l'algorithmique.

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Une bonne ressource : http://www.dailly.info/Tri-fusion

    Dans mes souvenirs, le problème du tri de très très grands tableaux / fichiers pose le souci de la copie / déplacement des données, voire dans certains cas le problème du déplacement du pointeur de fichier (ce qui coûte un déplacement de tête de lecture, qui n'est pas "gratuit"...).

    Le "truc", avec par exemple un très grand fichier, c'est qu'il est "inutile" de séparer le fichier en plusieurs parties et donc de le copier : tu peux t'en sortir en ouvrant N handles de fichier sur le même "gros" fichier initial, et en jouant avec les pointeurs de fichier pour "déplacer" le "début" d'un sous-fichier. Bien sûr, dans ce cas, les tests de type "eof()" sont interdits, c'est à toi de calculer le "EOF" en fonction de la position courante et de la fin théorique du bout de fichier.

    Tu effectues ensuite la fusion dans des fichiers temporaires ou, mieux, tu mixes plusieurs algos ensemble :
    - Par exemple, tri fusion jusqu'à arriver à une taille "décente" pour un QuickSort (ex : de 5.000 à 10.000 entrées, appelons cette taille limite K).
    - Tri rapide d'un bloc de taille relativement importante par QuickSort.
    - Remontée dans la récursion du tri fusion et création d'un fichier temporaire contenant un bloc de 2K entrées.
    - Fusion successive des blocs de données : on peut décider de conserver les fichiers temporaires existants, ou au contraire de trier "sur place" en écrasant les données originales, tout dépend de tes contraintes. Si tu es certain de travailler déjà sur une copie des données initiales, autant écraser. Sinon, faudra faire des copies impérativement.

    J'espère avoir été assez clair.

  9. #9
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    je te remercie de toutes ces précieuses informations.

    Parc que je ne suis pas en avance, j'ai décidé d'utiliser la commande system("sort fichier.csv"); je suis donc désolé pour tous les soucis que j'ai causé. Néanmoins, si je trouve un peu de temps, je m'y mettrai c'est promi

    merci à tous

Discussions similaires

  1. Grosses volumétries sur sqlserver
    Par genio dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/08/2007, 12h33
  2. Tri sur DBgrid
    Par julien41 dans le forum Bases de données
    Réponses: 21
    Dernier message: 19/02/2004, 17h33
  3. [Crystal] Performance sur grosses base de données
    Par Nico118 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 14/11/2003, 15h27
  4. tri sur la xème colonne
    Par r-zo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/07/2003, 13h41
  5. [VB6] [MSHFlexGrid] Tri sur clic dans la première ligne
    Par degreste dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/03/2003, 00h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo