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

Langage PHP Discussion :

[Tableaux] Tri de 2 tableaux liés le plus rapide possible


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut [Tableaux] Tri de 2 tableaux liés le plus rapide possible
    Voilà, j'ai deux tableaux qui sont liés :
    tab_nompro et tab_nomproIndice

    La première ligne du premier tableau correspond à la première ligne du second. il y a une correspondance ligne à ligne entre les 2 tableaux.

    Maintenant, j'ai besoin de trier le tableau tab_nompro par ordre alphabétique. Mais du coup, il faut que le second tableau suive le même processus de façon à ce que la correspondance ligne à ligne soit respectée.

    Pour le moment, je faisais un tri très basique et peu performant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                 for ($j=0;$j<$nbIndice;$j++) {
                for ($k=0;$k<$nbIndice-1;$k++) {
                    if (strcasecmp($tab_nompro[$k],$tab_nompro[$k+1]) > 0) {
                        $tmpNom =  $tab_nompro[$k];
                        $tab_nompro[$k] = $tab_nompro[$k+1];
                        $tab_nompro[$k+1] = $tmpNom;
                        $tmpIndice = $tab_nomproIndice[$k];
                        $tab_nomproIndice[$k] = $tab_nomproIndice[$k+1];
                        $tab_nomproIndice[$k+1] = $tmpIndice;
                    }
                }
            }
    Mais il s'avère que cette méthode de tri est beaucoup trop lente quand il y a beaucoup d'enregistrement. Je suis confronté ici à environ 3000 élément et comme la complexité du tri est de N^2, j'obtiens environ 9000000 d'itérations!!!
    Bien évidemment, le php lache l'affaire avant d'avoir pu tout traiter.

    Existe-il une fonction quicksort en php? Existe-il encore plus rapide que le quicksort?
    Pensez-vous que c'est une bonne solution?
    Хајде Јано коло да играмо

  2. #2
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Hello,

    je te conseille plutot de te baser sur les fonctions "sort" de PHP, qui sont optimisées pour ça...
    Google is watching you !

  3. #3
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    D'acord, mais comment faire pour lier mes deux tableaux et ne pas perdre la correspondance ligne à ligne entre ces 2?

    Merci pour ta réponse, je vais déjà regarder un peu plus en détail ces fonctions.
    Хајде Јано коло да играмо

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    array_multisort ?

  5. #5
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Salut Superced,

    Quand je suis confronté à ce genre de problème, je trie le tableau avec asort() qui maintient la correspondance avec les indices.

    puis je fais un foreach (tableau_trie as $cle => $valeur)
    et je récupère les données du deuxième tableau avec tableau_2[$key]

    Je ne sais pas si c'est optimisé mais ça marche
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  6. #6
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Mr N.
    array_multisort ?
    Si je fais ça :
    array_multisort($tab_nompro, $tab_nomproIndice);

    Tu penses que c'est bon?
    Хајде Јано коло да играмо

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    J'en sais rien du tout je propose, tu disposes
    Est-ce que tu obtient le résultat attendu ?

  8. #8
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Ca a l'air de fonctionner mais je vais faire des tests plus poussés cet après midi.

    Merci à tous, c'est super rapide en tous cas! Je verrai tout à l'heure si j'ai vraiment les bons résultats.
    Хајде Јано коло да играмо

  9. #9
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut SuperCed, si tu veux plus de détails sur cette fonction, tu peux aller jeter un oeil ici : http://www.php.net/manual/fr/functio...-multisort.php

    PHP.NET => à connaître absolument

    Bon développement ;-)
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  10. #10
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    C'est bon, tout fonctionne!
    Хајде Јано коло да играмо

  11. #11
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    N'oublie pas de cliquer sur en bas à gauche de la page ;-)
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2008, 13h10
  2. Réponses: 3
    Dernier message: 02/05/2007, 23h02
  3. Tri le plus rapide possible
    Par PadawanDuDelphi dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/10/2006, 19h19
  4. Lire un fichier le plus rapidement possible
    Par Rodrigue dans le forum SL & STL
    Réponses: 9
    Dernier message: 02/05/2006, 10h43
  5. Permuter des valeurs, le plus rapidement possible?
    Par danje dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 27/09/2005, 21h51

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