ISN Nice TP algorithmes 2012-2013
1
Objectifs :
Etudier plusieurs algorithmes classiques
Implémenter certains de ces algorithmes avec un langage de programmation
Avoir des notions sur la complexité des algorithmes
Logiciel utilisé : JavaScool
Consignes : On nommera chacun des programmes demandés selon la nomenclature suivante :
TP_{MALHERBE}_Algo_II_b : programme de la question II b) pour l’élève MALHERBE .
I Recherche par dichotomie
1) Décrire le principe d’un algorithme de recherche par dichotomie.
2) La proglet JavaScool « Dichotomie » permet de faire une recherche du drapeau d’un pays à
partir de son nom.
Se documenter sur cette proglet.
Utiliser les fonctions
length()
et
compare(pays, index)
pour écrire le programme suivant :
Ecrire une fonction qui effectue la recherche d’un pays donné par une méthode de
balayage et retourne le nombre de pages feuilletées du livre.
int recherche_par_balayage(String pays)
Ecrire une fonction qui effectue la recherche d’un pays donné par une méthode de
dichotomie et retourne le nombre de pages feuilletées du livre.
int recherche_par_dichotomie(String pays)
3) Notion de complexité :
a) Combien d’étapes maximum le programme par balayage effectue-t-il ?
b) Même question pour le programme par dichotomie.
c) Si la taille de l’échantillon à analyser est N, quel est le nombre maximum d’étapes pour
l’algorithme de balayage et pour celui de dichotomie.
d) Pour aller plus loin : (question bonus)
Ecrire un programme qui détermine le nombre moyen d’étapes pour rechercher un
entier compris entre 1 et N avec les deux méthodes (balayage et dichotomie).
Tester ce programme pour N = 10, 100, 1000, 10 000 et 100 000.
Représenter les résultats avec un tableur sous la forme d’un nuage de points avec en
abscisse une échelle logarithmique pour N.
(On sauvegardera le fichier du tableur.)
ISN Nice TP algorithmes 2012-2013
2
II Algorithmes de tri
Un algorithme de tri permet de trier des données numériques ou alphabétiques.
Nous traiterons des données numériques stockées dans un tableau à une dimension.
1) a) Proposer une idée d’algorithme de tri avec la possibilité d’utiliser un ou plusieurs
autres tableaux (dont un contiendra les données triées).
b) Coder cet algorithme avec JavaScool et le tester
c) Montrer que si la taille du tableau est n alors le nombre de boucles effectuées est
n(n + 1)
2.
2) Notion de tri en place.
Il est possible de trier les données à partir d’un seul tableau.
On dit alors qu’on effectue un tri sur place.
Il existe plusieurs algorithmes de tri en place qui ont des efficacités différentes.
Nous allons en étudier plusieurs.
3) Tri par insertion
Le tri par insertion est un algorithme de tri classique dont le principe est très simple.
C'est le tri que la plupart des personnes utilisent naturellement pour trier des cartes :
prendre les cartes mélangées une à une sur la table, et former une main en insérant chaque
carte à sa place.
Voici un algorithme de tri par insertion en pseudo-code :
procédure tri_insertion(tableau T, entier n)
pour i de 1 à n-1
x T[i]
j i
tant que j > 0 et T[j - 1] > x
T[j] T[j - 1]
j j - 1
fin tant que
T[j] x
fin pour
fin procédure
Les éléments du tableau T sont numérotés de 0 à n – 1.
ISN Nice TP algorithmes 2012-2013
3
a) Le faire tourner « à la main » pour T = {2 ;5 ;8 ;3} en complétant le tableau suivant :
i
Tableau T avant l’itération sur i
Tableau T après l’itération sur i
1
2
3
b) Coder cet algorithme en Java et le tester avec différents jeux de tests.
c) Complexité :
Quel est le tableau en entrée qui présente le cas le plus favorable en termes de
nombre de boucles effectuées ?
Quel est le tableau en entrée qui présente le cas le plus défavorable en termes de
nombre de boucles effectuées ?
On montre (avec des maths !!) qu’en moyenne le nombre de boucles effectuées pour
un tableau de taille n est
4.
4) Des algorithmes de tri plus efficaces
Rechercher sur Internet des informations sur les algorithmes suivants :
Tri à bulles (bubble sort)
Tri par sélection (selection sort)
Tri fusion (merge sort)
Tri rapide (quick sort)
On pourra visualiser graphiquement le principe de ces algorithmes de tri sur le site WEB
suivant :
http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
ISN Nice TP algorithmes 2012-2013
4
5) Complexité des algorithmes de tri
a) Se renseigner sur Internet pour compléter le tableau suivant :
Méthode de tri
Complexité en moye
nne pour un tableau de
taille N.
Tri par insertion
Tri par sélection
Tri à bulles
Tri fusion
Tri rapide
a) A l’aide d’un tableur, présenter à l’aide d’un graphique en nuage des points la complexité
de ces différents algorithmes de tri en fonction de la taille N du tableau à trier pour N
= 16, 64, 256, 1024 et 4096.
(On sauvegardera le fichier du tableur.)
On utilisera deux graphiques :
Un avec une échelle logarithmique en base 2 pour l’axe des abscisses uniquement
Un autre avec deux échelles logarithmiques en base 2 pour les deux axes.
b) Conclusion : classer les algorithmes de tri par ordre croissant de leur complexité
moyenne.
1 / 4 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 !