• Aucun résultat trouvé

Correction TD 8 : Algorithmes de tri

N/A
N/A
Protected

Academic year: 2022

Partager "Correction TD 8 : Algorithmes de tri"

Copied!
3
0
0

Texte intégral

(1)

Correction TD 8 : Algorithmes de tri

Licence 1 MASS semestre 2, 2007/2008

Exercice 1 : Tester

On consid`ere que le tri devrait ˆetre selon l’ordre croissant.

a- Algorithme Test(T : tableau d’entiers;n: entier) : bool´een d´ebut

variable i: entier i←0

tant quei < n−1 etT[i]≤T[i+ 1]faire i←i+ 1

fin tant que retourneri≥n−1 fin

b- Algorithme Compter(T : tableau d’entiers;n: entier) : entier d´ebut

variable i,c: entier c←0

pouride 0`a n−2 faire siT[i]> T[i+ 1]alors

c←c+ 1 fin si fin pour retournerc fin

Exercice 2 : Nombre d’op´ erations

a- Pour effectuer k recherches dans un tableau non tri´e de taille n il faut compter en moyenne kn2 op´erations.

b- Trier le tableau se fait en nlog2n auquel il faut ajouter la recherche di- chotomique qui se fait en log2net qu’on doit fairekfois : (n+k) log2n.

c- En moyenne il est donc plus int´eressant de trier le tableau et de faire une recherche dichotomique des quek≥log2n.

1

(2)

Exercice 3 : Suppressions

a- On commence par chercher l’´el´ement s `a supprimer et ensuite on d´ecale les suivants.

Algorithme suppression(T : tableau d’entiers,s, k: entier) : entier d´ebut

variable i,r: entier r←0

tant quer≤k−1 etT[r]6=sfaire r←r+ 1

fin tant que sir > k−1 alors

retournerk sinon

pouride r`a k−2 faire T[i]←T[i+ 1]

fin pour

retournerk−1 fin si

fin

b- Algorithme suppressionOrdonn´ee(T : tableau d’entiers,s,k : entier) : entier

d´ebut

variable i,r, d: entier r←0

tant quer≤k−1etT[r]≤sfaire siT[r] =salors

d←d+ 1 fin si r←r+ 1 fin tant que

sir > k−1 etd= 0alors retournerk

sinon

pouride r−d`a k−2 faire T[i]←T[i+d]

fin pour

retournerk−d fin si

fin

Exercice 4 : Ordre d´ ecroissant

a- Algorithme triS´election(T : tableau d’entiers,n: entier) : rien d´ebut

2

(3)

variable i,jM ax: entier pouride 0`a n−2 faire

jM ax←indiceMax(T,n, i) Permuter(T,i,jMax) fin pour

fin

Algorithme Permuter(T : tableau d’entiers,i,j : entier) : rien d´ebut

variable x: entier x←T[i]

T[i]←T[j]

T[j]←x fin

Algorithme indiceMax(T : tableau d’entiers,n,k: entier) : entier d´ebut

variable i,iMax : entier iMax←k

pouride k+ 1`an−1faire siT[i]> T[iMax]alors

iMax←i fin si fin pour

retourneriMax fin

b- Algorithme triInsertion(T : tableau d’entiers,n: entier) : rien d´ebut

variable i: entier

pouride 1`a n−1 faire Ins´erer(T,i)

fin pour fin

Algorithme ins´erer(T : tableau d’entiers,i: entier) : rien d´ebut

variable j,x: entier x←T[i]

j ←i−1

tant que0≤j et x≥T[j]faire T[j+ 1]←T[j]

j ←j−1 fin tant que T[j+ 1]←x fin

3

Références

Documents relatifs

Question : Est-il possible de trier un tableau de n ´el´ements en moins de n · log( n ) op´erations dans le pire cas. Non si on n’utilise que des comparaisons 2 `a 2 et sans

A chaque étape, on cherche le plus petit élément dans la partie droite non triée, puis on l’échange avec l’élément le plus à gauche de la partie non triée.. Ainsi, la

Cette situation a lieu par exemple lorsque le tableau est déjà trié (dans un sens comme dans l’autre) puisque le pivot choisi est à chaque étape un élément extrémal de la partie

C’est le tri pratiqué intuitivement pour classer un jeu de cartes : il consiste de ranger toutes les cartes, l’une après l’autre, dans l’ordre de la donne au bon endroit parmi

– trie la liste des éléments selon ce chiffre, mais conserve l'ordre des éléments ayant le même chiffre (ce qui est un tri stable). – répète le tri avec chaque chiffre

– trie la liste des éléments selon ce chiffre, mais conserve l'ordre des éléments ayant le même chiffre (ce qui est un tri stable). – répète le tri avec chaque chiffre

– trie la liste des éléments selon ce chiffre, mais conserve l'ordre des éléments ayant le même chiffre (ce qui est un tri stable). – répète le tri avec chaque chiffre

– trie la liste des éléments selon ce chiffre, mais conserve l'ordre des éléments ayant le même chiffre (ce qui est un tri stable). – répète le tri avec chaque chiffre