+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Inscrit en
    janvier 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : janvier 2009
    Messages : 7
    Points : 1
    Points
    1

    Par défaut Tri d'un tableau par un algorithme

    Bonjour,

    J'ai ce petit exercice à faire et je bloque à un moment :

    Un tableau à une dimension contenant 20 éléments
    (entiers) n’est pas trié et possède des éléments
    éventuellement en double.
    Réaliser un premier algorithme de tri sur place dans
    l’ordre croissant, puis un second algorithme pour passer
    au tri inverse à partir d’un tri croissant ou décroissant.

    Je propose ce qui suit, le probleme, c'est que je ne sais pas s'il serait plus judicieux de faire appel à une fonction lorsque je test l'ordre de rangement de mon tableau, ou si je doit réécrire le code ?

    A moins que je me plante complètement et que ce ne soit pas la procédure à suivre...
    Code :
    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
    VAR 
        TABLEAU : data[1..20] : ENTIER	//Ce tableau contiendra les valeurs à classer
      TABLEAU :suite[1..6] : ENTIER		//Ce tableau nous servira d'étape pour classer nos nombres
      Nb_elements : ENTIER
      Inserer <-- VRAI
      Croissant <-- FAUX				// Ces deux variable vous nous servir pour la 2ème partie, afin d'itentifier l'ordre de classification du tableau
      Décroissant <-- FAUX
      
      
    DEBUT
      Suite[1] <-- data [1]
      Nb_elements <--1 // nombre d’elements dans suite
      
      POUR (i<--1 : ENTIER A 20 PAS DE 1)
        	data[i]<-- ALEATOIRE(20)
      FINPOUR  
    
      POUR (i <-- 2 : ENTIER A 20 PAS DE 1)
      FAIRE
         POUR (j <--1 : ENTIER A nb_elements PAS DE 1 )
         FAIRE 
             SI (Data[i] < suite[j])
             ALORS 
              // je dois l’insérer
              // je décale tous les éléments à partir du rang j 
              POUR (k <-- nb_elements +1 : ENTIER A j+1 PAS -1)
              FAIRE
                  Suite[k+1] <-- suite [k]
              FINPOUR
                  nb_elements <-- nb_elements +1
              // j’insere l’element
              Suite[j] <-- data[i]         
              // je sors de ma boucle
              J <-- nb_elements +1   
              Inserer <-- VRAI 
             FINSI
         FINPOUR
         SI (inserer = FAUX) 
         ALORS 
              suite[nb_elements] <-- data [i]
              nb_elements <-- nb_elements + 1
         FINSI
      FINPOUR
      
      // On va maintenant trier par ordre décroissant ou croissant, on suppose que le tableau est déjà trié
      
      POUR (i<--1 : ENTIER A 20 PAS DE 1)
      	SI (data[i] < data[i+1])
      	ALORS
      		Croissant <-- VRAI
      	FINSI
      	SINON
      	SI (data[i] > data[i+1])
      	ALORS
      		Decroissant <-- VRAI
      	FINSI
      FINPOUR
      
     *****JE BLOQUE ICI*** 
      
      
    FIN

  2. #2
    Expert Confirmé Sénior
    Avatar de PRomu@ld
    Homme Profil pro Romuald Perrot
    Ingénieur de Recherche
    Inscrit en
    avril 2005
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Nom : Homme Romuald Perrot
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 4 160
    Points : 6 013
    Points
    6 013

    Par défaut

    c'est que je ne sais pas s'il serait plus judicieux de faire appel à une fonction
    A partir du moment où tu te pose la question, c'est qu'il y a de fortes chances que tu en ais besoin. De plus, tu travailles en algorithmique tu n'as donc que faire du coût éventuel d'une fonction.

    Mais attention, trop de fonctions tue les fonctions. Ce qu'il faut, c'est toujours regrouper dans une fonction, une liste d'opération atomiques. (par ex : teste que le tableau est trié, échange deux éléments, ...)
    http://rperrot.developpez.com
    http://phos-graphein.fr

    Vous désirez contribuer à la rubrique algorithmique, n'hésitez pas à me contacter.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •