Vincent Neiger et Henri Lastakowski 2010–2011
Matlab – TP no10
Le problème du tri
1 Problème du pâtissier
Il s’agit dans cet exercice de simuler avec les outils que vous connaissez (tableaux, boucles.. . )
la situation suivante :
Un pâtissier est face à une pile de crêpes de différentes tailles.
Il dispose d’une spatule avec laquelle il peut retourner les ppremières crêpes du haut de la
pile, avec pquelconque. Son objectif est d’avoir une pile de crêpes empilées par ordre croissant
de taille.
Q 1.a) Écrivez d’abord une fonction retourner qui prend comme argument un
tableau et un nombre entier p, et qui retourne les ppremières crêpes du haut de la pile.
Q 1.b) Réfléchissez à un algorithme permettant de trier la pile de crêpes.
Q 1.c) Écrivez une fonction (ou plusieurs fonctions) permettant de trier la pile de
crêpe à partir de cet algorithme.
2 Tri par sélection
Le but est d’écrire une fonction matlab tri_selection qui réalise le tri d’un tableau
d’entiers. Autrement dit, elle prend en entrée un tableau d’entiers relatifs et renvoie en sortie
le tableau trié correspondant. On va utiliser une méthode spécifique appelée tri par sélection.
Par exemple, l’appel tri_selection([1 3 -4 -2 7 9 10 3]) devra renvoyer le tableau
suivant : [-4-21337910].
Q 2.a) Écrivez un algorithme echange qui, étant donné un tableau vde nentiers et
deux entiers iet jcompris entre 1et n, permute les deux éléments d’indices iet jdu tableau v.
Implantez cet algorithme en matlab.
Q 2.b) Écrivez un algorithme minimum_partiel qui, étant donné un tableau vde
nentiers et deux entiers i, j tels que 16i6j6n, recherche l’indice kdu minimum des
éléments de vtel que kvérifie i6k6j. Si le minimum est atteint plusieurs fois, on fera le
choix de renvoyer le plus petit des indices kqui conviennent.
Implantez cet algorithme en matlab.
Question subsidiaire : quel changement mineur est suffisant pour que l’algorithme, au lieu
de renvoyer le plus petit, renvoie le plus grand des indices kqui conviennent ?
Q 2.c) Écrivez, à l’aide des deux algorithmes echange et minimum_partiel, un
algorithme de tri que vous appellez tri_selection.
Implantez cet algorithme en matlab et testez-le sur plusieurs exemples bien choisis.
Matlab – TP no10 Le problème du tri 2/2
3 Tri par insertion
Le but est d’écrire une fonction matlab tri_insertion qui réalise le tri d’un tableau
d’entiers. Autrement dit, elle prend en entrée un tableau d’entiers relatifs et renvoie en sortie
le tableau trié correspondant. On va utiliser une méthode spécifique appelée tri par insertion.
Par exemple, l’appel tri_insertion([1 3 -4 -2 7 9 10 3]) devra renvoyer le tableau
suivant : [-4-21337910].
Q 3.a) Écrivez un algorithme insere qui, étant donné un tableau vde nentiers,
un entier itel que 16i6net un entier quelconque a, insère adans le tableau v« entre les
éléments d’indices i1et i».
Plus précisément, si v0est le résultat de l’opération,
v0(k) =
v(k)si 16k6i1
asi k=i
v(k1) si i+ 1 6k6n+ 1
Implantez cet algorithme en matlab.
Q 3.b) Écrivez un algorithme recherche_dichotomique qui, étant donné un
tableau vtrié en ordre croissant et un entier a, renvoie l’indice (unique) itel que 26i6n
et v(i1) < a 6v(i)(autrement dit, le plus petit indice itel que v(i1) 6a6v(i)).
Implantez cet algorithme en matlab.
Q 3.c) Écrivez, à l’aide des deux algorithmes insere et recherche_dichotomique,
un algorithme de tri que vous appellez tri_insertion.
Implantez cet algorithme en matlab et testez-le sur plusieurs exemples bien choisis.
Si vous avez fini et ne savez pas quoi faire, nous avons de quoi vous occuper, il suffit de
demander !
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !