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 :

Comment melanger rapidement un tableau ?


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 152
    Par défaut Comment melanger rapidement un tableau ?
    Bonjour à tous,

    Je dispose sous delphi de deux tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TAB : array[0..999999] of char;  // 1 million de lettres 'A' .. 'Z'
    TAB2 : array[0..9] of integer;  // 10 index de TAB qui doivent rester fixes
    Exemple :
    si TAB2 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
    alors le mélange portant sur TAB doit conserver les 10ers caractères à leur place et mélanger le reste du tableau TAB.
    TAB2 pouvant contenir n'importe quelle valeur entre 0 et 999999.

    Objectifs:
    Mélanger le plus rapidement et le plus aléatoirement possible le tableau TAB, en respectant les directives de TAB2, et sans changer la fréquence de chaque lettre. (cela doit être rapide, car je dois effectuer ce mélange un grand nombre de fois...)

  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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    L'algorithme de Fisher & Yates est en O(n).

    (click me)

    Pour tenir compte de tes contraintes il faut ajouter un test pour savoir si on tente de swapper des cases interdites, et proceder a un nouveau tirage. Ca va rajouter quelques tours de boucles, mais avec un ratio de 10/1.000.000 ca ne devrait pas trop se sentir.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 152
    Par défaut
    Merci.

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

Discussions similaires

  1. Comment recevoir rapidement une réponse à votre question ?
    Par Community Management dans le forum Windows
    Réponses: 3
    Dernier message: 17/08/2014, 02h28
  2. Réponses: 14
    Dernier message: 13/10/2005, 12h55
  3. Comment détecter si un tableau est vide ?
    Par ErPi dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2005, 18h50
  4. Réponses: 8
    Dernier message: 20/05/2005, 20h37
  5. Comment afficher rapidement des images ?
    Par Michel_57 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 16/01/2005, 04h07

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