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 delements 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 linsé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
// jinsere lelement
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 |