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

Python Discussion :

Mesure temps d'exécution de 3 algorithmes de tri et création de graphique.


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Mesure temps d'exécution de 3 algorithmes de tri et création de graphique.
    Bonjour je chercher de l'aide concernant un exercice d'informatique. Le but est de mesurez le temps d'exécution de 3 algorithmes de tri pour des listes de longueur n, chose que j'ai réussi à faire, mais ensuite il faut également créer un graphique montrant l'évolution du temps par rapport à la taille de la liste. C'est sur ce dernier point que je bloque ... j'ai beau avoir vérifié mon code plusieurs fois, réécris certaines parties, rien n'y fait ... pouvez-vous s'il vous plaît m'indiquez un moyen de résoudre mon problème ?

    Voici mon code, donc la première partie (jusqu'au n = []) est issu d'un autre exercice et ne sert qu'à faire fonctionner les algorithmes pour par la suite en calculer la vitesse d'exécution :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    import time
    import numpy as np
    import matplotlib.pyplot as plt
    import random
     
     
    L = [10, 20, 30, 0, 1, 2, 1, 0, 100]
     
    def swap(L, p1, p2):
        L[p1], L[p2] = L[p2], L[p1]
        return L
     
    print(swap(L, 0, 2))
     
     
     
    def find_max(L, p1, p2):
        m = p1
        for i in range(p1, p2 + 1):
            if (L[i] > L[m]):
                m = i
        return m
     
    print(find_max(L, 3, 5))
     
     
     
    def random_list(n, min, max):
        L = []
        for i in range(n):
            L.append(random.randint(min, max))
        return L
     
    print(random_list(5, 0, 10))
     
     
    def selection_sort(L):
        len(L)
        for i in range(0, len(L)-1):
            pO = find_max(L,i,len(L)-1)
            L = swap(L,i,pO)
        return L
     
    print(selection_sort(L))
     
     
    def bubble_sort(L):
        for i in range(0,len(L)-1):
            if L[i] < L[i+1]:
                L = swap(L,[i+1], [i])
            return L
     
    print(bubble_sort(L))
     
    def selection_sort(L):
        len(L)
        for i in range(0, len(L)-1):
            pO = find_max(L,i,len(L)-1)
            L = swap(L,i,pO)
        return L
     
     
    n = []
    for i in range(2000):
        n.append(random.randint(0,2000))
     
    def test_selection(n):
     
        start=time.time()
        selection_sort(n)
        total_time = time.time() - start
        return total_time
     
    print(test_selection(n))
     
    def test_bubble(n):
        start=time.time()
        bubble_sort(n)
        total_time = time.time()-start
        return total_time
     
    print(test_selection(n))
     
    def test_python(n):
        start = time.time()
        n.sort(reverse=True)
        total_time=time.time()-start
        return total_time
    print(test_python(n))
     
    plt.ylim(0,0.5)
    plt.xlim(0,2000)
     
    y1 = test_bubble([n])
    x = [n]
    plt.plot(x,y1)
    plt.show()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par redplayer Voir le message
    C'est sur ce dernier point que je bloque ... j'ai beau avoir vérifié mon code plusieurs fois, réécris certaines parties, rien n'y fait ... pouvez-vous s'il vous plaît m'indiquez un moyen de résoudre mon problème ?
    Si vous voulez faire un graphe des temps d'exécution en fonction de N, il faut faire varier N (par exemple lui faire prendre des valeurs 10, 100, 1000, 10000), fabriquer une liste à trier de N éléments, trier et stocker le temps que çà a mis.
    Relisez votre code, vous fabriquer une seule liste de 2000 éléments. Si vous n'essayez pas (de fabriquer des listes de taille différentes), on ne va pas faire (l'exercice) à votre place.
    Après, si vous dites "je bloque" sans expliquer pourquoi, on va pas pouvoir beaucoup vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    je bloque justement sur comment faire varier la valeur N. Je suppose que cela est possible avec une boucle, mais je n'y arrive pas pour le moment. J'arrive à afficher le temps que prenne mes algorithmes, mais pas à faire le graphique avec les temps d'exécution de liste de longueur n.
    Merci quand même pour votre aide.

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Commencé déjà par créer une fonction fabricant une liste d'entiers aléatoires dont l'argument sera la taille voulue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def create_list(size):
        # à vous de jouer
     
        return my_list
    Puis plutôt que de faire n fois la mesure du temps d'exécution de tes fonctions, crée une seule fonction prenant en paramètre une autre fonction qui sera exécutée pour chaque fonction pris en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def measure_time(f):
        # à vous de jouer
    Tout cela ne devrait pas poser de problème, je vois que tu maîtrises les fonctions, et d'autres notions encore utiles.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par redplayer Voir le message
    je bloque justement sur comment faire varier la valeur N.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    valeurs = 10, 100, 1000, 10000
    for n in valeurs:
         ...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Mesurer temps d'exécution d'un traitement dans un script shell
    Par AJ_ing dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 12/07/2012, 14h59
  2. Réponses: 2
    Dernier message: 24/04/2011, 08h43
  3. Temps d'exécution d'un algorithme génétique
    Par debalgo dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 24/03/2011, 00h53
  4. [XL-2010] [DEBUTANT]Mesure temps d'exécution d'une macro et/ou d'une fonction
    Par KNIZOU dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/04/2010, 11h36
  5. [TP] Mesure du temps d'exécution d'un algorithme
    Par williamdunord dans le forum Turbo Pascal
    Réponses: 19
    Dernier message: 18/05/2007, 06h47

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