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