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 d'un tableau de tres grande taille


Sujet :

C++

  1. #1
    Membre régulier Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Points : 101
    Points
    101
    Par défaut Tri d'un tableau de tres grande taille
    Bonjour tout le monde, j'espere que je trouverai de l'aide ici, car franchement je cherche partout et pour le moment je suis bloqué. Enfin bref, je vous explique mon probleme. J'ai une image que je l'ai decomposé en blocs, et apres j'ai claculé des valeurs sur ces bloque et je les enregistré dans un tableau. La dimension de ce tableau est de 4100 presque ce qui est enorme, ce que je devrai faire est de trié ces 4100 valeurs dans l'ordre croissant. donc franchement il me faut une bonne fonction de tri, avez vous une idée et ou un bout de code de tri efficace que je peux utilisé? votre aide compte bcp pour moi, aidez moi svp .

  2. #2
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    4100? C'est pas énorme du tout... Essaye un simple sort..
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    je dirais même que 4100 est ridiculement peu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector<int> vis;
    ...
    std::sort(vis.begin(), vis.end());

  4. #4
    Membre régulier Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Points : 101
    Points
    101
    Par défaut
    Ah d'accord vous m'assuré alors ouuf, mais en fit moi j'ai pas fait mon implementation en STL, je m explique . j'ai construi en fait un tableau structure, qui contient 3 champs pour une case du tableau

    intensité,coordonée_X,coordonée_Y , et je veux trié l intensité, et apres pour caque intensité je peux localisé le blocs correspondant avec les deux champs (X,Y). c'est bien dommage j ai pas travaillé avec les STL

  5. #5
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    c'est toujours possible (merci les itérateurs) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    tastructure tab[N] = ...;
     
    std::sort(tab, tab+N);
    Et si tastructure n'implémente pas d'opérateur < alors tu peux passer à sort un troisième paramètre qui est un foncteur.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    Par contre il va falloir que tu fournisses une fonction de comparaison (ou un foncteur) qui trie selon l'intensité.

    Et sinon pourquoi tu n'utilises pas la STL?

  7. #7
    Membre régulier Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Points : 101
    Points
    101
    Par défaut
    Oui exactement j 'ai deja essayé avec cette commande mais ça marche pas je sais pas pourquoi:

    std::sort (Table.intensity,Table.intensity+Number_Of_Element);

    mais j' ai des erreurs de compilation:

    error C2228: la partie gauche de '.intensity' doit avoir un class/struct/union
    1> le type est 'Bloc_Table *'

    ??????????

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    Il faut lire un peu les définitions de ce que tu utilises.

    Il faut que tu donnes:

    - le début du tableau
    - la fin du tableau
    - une fonction de comparaison sur l'intensité

    A savoir tu n'es pas obligé de passer la fonction directement, tu peux aussi créer un operateur de comparaison ( operator<() ) dans ta structure.

    C'est peut être abstrait ce que je dis il faudrait que tu regardes des exemples pour comprendre comment faire.

  9. #9
    Membre régulier Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Points : 101
    Points
    101
    Par défaut
    Merci nikko peux tu etre clair stp?

  10. #10
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    struct Bloc_Table
    {
     int intensity;
     int posx, posy;
     friend bool operator<(Bloc_Table const & v1, Bloc_Table const & v2)
     {
      return v1.intensity < v2.intensity;
     }
    };
     
    ...
     
    Bloc_Table *Table=new Bloc_Table[Number_Of_Element]; //bof...
     
    ...
     
    std::sort (Table, Table+Number_Of_Element);
    etc...

  11. #11
    Membre régulier Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Points : 101
    Points
    101
    Par défaut
    camboui tu m'as sauvé la vie, je sais pas comment te remercié, merci pour tout ceux qui ont participé sur ce sujet aussi, mon probleme je pense est reglé en tout cas, je vous souhaite tous une bonne journée les gas, merci encore à toi camboui

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transformer les elément d'un vector en tableau simple de grande taille
    Par kamilia_85 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 08/02/2009, 23h59
  2. utilisation d'entier de tres grande taille
    Par HoB dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2007, 14h19
  3. Taille de tableau tres tres grand (BCB6)
    Par cquadjul dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/04/2006, 08h48
  4. taille d'un tableau 2d trop grande ?
    Par Tex-Twil dans le forum C++
    Réponses: 11
    Dernier message: 28/11/2005, 16h41
  5. decalage à gauche sur une tres grand tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/07/2005, 22h40

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