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

 C Discussion :

tri des enregistrements


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 4
    Points
    4
    Par défaut tri des enregistrements
    Bonjour tout le monde,

    Je veux faire le tri d'enregistrements qui se trouvent dans un fichier, et les avoir triés dans un nouveau fichier... Le problème est que je ne peux pas faire le tri dans un tableau puisque le fichier est un peu volumineux (en plus le prof nous a interdit de le faire)

    Je ne sais pas comment procéder... SVP, si vous avez une idée n'hésitez pas à la poster.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 377
    Points : 23 663
    Points
    23 663
    Par défaut
    Cela va dépendre beaucoup de la façon dont est structuré le fichier que tu dois trier. En particulier, il est intéressant de connaître le rapport de la taille des enregistrements à leur nombre : ton fichier est-il gros parce qu'il contient beaucoup d'enregistrements ou parce que ces enregistrements sont larges en eux-mêmes ?

    Dans le second cas, il peut être intéressant d'envisager l'utilisation d'une fonction de hachage ordonnée, combinée à un tri par insertion. Tu crées une liste chaînée dont les maillons stockent le résultat de la fonction, tu balaies le fichier linéairement en une passe, du début à la fin, en déterminant le hash de chaque enregistrement et en allant le placer directement à la bonne place dans ta liste, ensuite tu crées le second fichier en allant directement lire les bons enregistrements dans le premier fichier selon la liste et en les enregistrant à la suite dans le second. Avantages : chaque enregistrement est lu exactement deux fois, et ils sont ré-enregistrés en une seule opération.

    Tu peux également procéder par sélection : tu ouvres tout de suite ton fichier en écriture, tu balayes le premier pour trouver le plus petit enregistrement, tu l'écris, puis tu rebalayes le fichier de référence une second fois pour trouver le suivant et ainsi de suite. Avantages : rien en mémoire, mais tu fais beaucoup de passes successives sur le fichier de référence.

    Troisième possibilité : tu copies directement le fichier de référence et tu tries la copie avec un quicksort. Rien ou presque en mémoire. Le fichier de référence n'est lu qu'une fois et est libéré, mais cela engendre des mouvements intensifs sur le fichier de destination. À proscrire sur les supports fragiles tels que clés USB ou disquettes.

Discussions similaires

  1. Tri des enregistrement d'une table
    Par Otis07 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 27/04/2009, 22h33
  2. [MySQL] Tri des enregistrements
    Par firejocker dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/11/2007, 13h28
  3. tri des enregistrements
    Par gentelmand dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/06/2007, 09h10
  4. Tri des enregistrements d'une IBTable
    Par Gelinas dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/01/2007, 11h43
  5. [Formulaire] Tri des enregistrements
    Par timoth dans le forum IHM
    Réponses: 1
    Dernier message: 24/12/2006, 11h59

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