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 : 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
 
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