• Aucun résultat trouvé

tmp e c h a n g e e f f e c t u e = True return e c h a n g e e f f e c t u e (1) D´erouler (sans la programmer) la fonction etape bulle sur la liste L

N/A
N/A
Protected

Academic year: 2022

Partager "tmp e c h a n g e e f f e c t u e = True return e c h a n g e e f f e c t u e (1) D´erouler (sans la programmer) la fonction etape bulle sur la liste L "

Copied!
2
0
0

Texte intégral

(1)

BCPST Algorithmes de tri 2020-2021 Exercice 1 :

On se donne l’algorithme suivant : def e t a p e b u l l e ( L ) :

e c h a n g e e f f e c t u e = F a l s e f o r i in range(len( L)−1 ) :

i f L [ i ] > L [ i + 1 ] : tmp = L [ i +1]

L [ i +1] = L [ i ] L [ i ] = tmp

e c h a n g e e f f e c t u e = True return e c h a n g e e f f e c t u e

(1) D´erouler (sans la programmer) la fonction etape bulle sur la liste L = [5, 1, 4, 2, 8].

(2) `A quoi sert cette fonction ? (3) D´eterminer sa complexit´e.

(4) Tester plusieurs fois cette fonction sur la mˆeme liste L jusqu’`a ce qu’elle renvoie False.

(5) En d´eduire la fonction tri bulle qui prend en argument une liste L et la tri.

(6) D´eterminer la complexit´e de cet algorithme.

(7) Pourquoi l’appelle-t’ontri `a bulle?

(8) Programmer et tester cette fonction (code : 0c7f-5710) Exercice 2 :

Dans cette question, on cherche `a ´ecrire l’algorithme de tri par insertion. Voici la description de cet algorithme par Wikipedia :

Dans l’algorithme, on parcourt le tableau `a trier du d´ebut `a la fin. Au moment o`u on consid`ere le i-`eme ´el´ement, les ´el´ements qui le pr´ec`edent sont d´ej`a tri´es. Pour faire l’ana- logie avec l’exemple du jeu de cartes, lorsqu’on est `a la i-`eme ´etape du parcours, le i-`eme

´

el´ement est la carte saisie, les ´el´ements pr´ec´edents sont la main tri´ee et les ´el´ements suivants correspondent aux cartes encore m´elang´ees sur la table.

L’objectif d’une ´etape est d’ins´erer le i-`eme ´el´ement `a sa place parmi ceux qui pr´ec`edent.

Il faut pour cela trouver o`u l’´el´ement doit ˆetre ins´er´e en le comparant aux autres, puis d´ecaler les ´el´ements afin de pouvoir effectuer l’insertion. En pratique, ces deux actions sont fr´equemment effectu´ees en une passe, qui consiste `a faire remonter l’´el´ement au fur et

`

a mesure jusqu’`a rencontrer un ´el´ement plus petit.

Exemple pour la liste [9,6,1,4,8] :

Etape´ Liste au d´epart Liste `a l’arriv´e.

Etape 1´ 9 6 1 4 8 6,9,1,4,8 Etape 2´ 6,9,1,4,8 1,6,9,4,8 Etape 3´ 1,6,9,4,8 1,4,6,9,8 Etape 4´ 1,4,6,9,8 1,4,6,8,9

(1) ´Ecrire d’abord la fonction insere (L, i ) qui prend en param`etre une liste L et un entier i et ins`ere l’´el´ement L[i ] dans la liste L. Un jeu de tests est :

# Jeu de t e s t s

t a b = [ 1 , 3 , 8 , 1 3 , 2 , 1 ] t a b 2 = [ 1 , 2 , 3 , 8 , 1 3 , 1 ] i n s e r e ( tab , 4 )

a s s e r t t a b == t a b 2

t a b 2 = [ 1 , 1 , 2 , 3 , 8 , 1 3 ]

(2)

BCPST Algorithmes de tri, Page 2 sur 2 2020-2021 i n s e r e ( tab , 5 )

a s s e r t t a b == t a b 2

(2) En d´eduire la fonction tri insertion qui prend en entr´ee une liste L et tri L (3) ´Ecrire l’algorithme enPython.

(4) ´Etudier la complexit´e de cet algorithme.

(5) Programmer et tester cette fonction et la complexit´e de celle-ci.

Exercice 3 :

En utilisant une des fonctions pr´ec´edentes, ´ecrire la fonction mediane qui prend en argument une liste de nombres et renvoie la m´ediane de celle-ci

Exercice 4 :

Dans cet exercice, on s’aidera de l’aide :https://wiki.python.org/moin/HowTo/Sorting.

(1) Utiliser et comparer les deux fa¸cons de trier en Python sort et sorted.

(2) En utilisant la fonction de votre choix, trier la liste [7,2,5,3,8] ; (3) Trier la mˆeme liste mais dans le sens inverse ;

(4) Trier la liste [(7,2),(5,3),(4,2),(8,1)] en utilisant la seconde coordonn´ees (on doit obtenir [(8,1),(7,2),(4,2),(5,3)] ) ;

(5) Comparer le temps d’execution pour trier une liste avec sort et avec les algorithmes de tri que l’on a ´ecrit avant.

Exercice 5 :

Un singe trie les cartes de la fa¸con suivante : il prend les cartes, les jette en l’air, les ramasse puis regarde si elles sont tri´ees. Si oui, il s’arrˆete, sinon il relance les cartes.

(1) ´Ecrire la fonction est triee qui prend en argument une liste et renvoie True si la liste est tri´ee et False sinon. La complexit´e devra ˆetre lin´eaire.

(2) En d´eduire la fonction tri du singe qui tri comme un singe.

Exercice 6 : (1)

Quel est le probl`eme du tri `a bulle pour trier la liste [2,3,4,5,1] ? On pourra compter le nombre d’appels `aetape bulle

(2) Une am´elioration simple (appeler tri cocktail ou tri `a bulle bidirectionnel) consiste `a modifier la fonctionetape bulleen rajoutant une boucle for qui tri la liste dans l’autre sens (on fait remonter les plus petits vers le d´ebut de la liste).

Ecrire cette nouvelle fonction.´ Tester cet algorithme.

(3) Une autre am´elioration est le tri pair-impair dont on trouve une explication ici :https:

//fr.wikipedia.org/wiki/Tri_pair-impair Exercice 7 :

Mettre en place l’am´elioration d´ecrite ici du tri par insertion : https://fr.wikipedia.

org/wiki/Tri_de_Shell

Références

Documents relatifs

L’ordonnance 2017-1162 du 12 juillet 2017 prise en application de la loi Sapin 2 a redistribué entre le rapport de gestion et le rapport sur le gouvernement d’entreprise

* Des explications concernant cette rubrique sont données dans la notice n° 2032 (et dans la notice n° 2058–NOT pour le régime de groupe). Désignation

Les numéros renvoient au numéro de page / The numbers refer to the page number.

steht: elementltren~ lies:

Die anonym elnzureichendeu Bewerbungsschriften sind in deutscher, lateinischer oder franzb'sischer Sprache zu verfassen~ miissen deutlich geschrieben und pagi~irt,

Die Coefficienten der bestandig convergirenden P0tenzrcihe, in die F(x) entwickelt werden kann, wOrden sicht leieht ergeben, wGnn diese Frage bejaht werden

Later on the identity (6) was used to obtain estimates from below for analytic capacity [Me] and to describe uniform rectifiability via the mapping properties

• Le sèche-serviettes soufflant: idéal pour les petites salles de bains où il n’y a pas de place pour installer un sèche-serviettes classique, le sèche-serviettes soufflant