• Aucun résultat trouvé

Université de Nice-Sophia Antipolis POLYTECH

N/A
N/A
Protected

Academic year: 2022

Partager "Université de Nice-Sophia Antipolis POLYTECH"

Copied!
1
0
0

Texte intégral

(1)

Université de Nice-Sophia Antipolis POLYTECH

PeiP2 2018–2019

Examen de Algorithmique et Struct. de Données

Durée : 0h30 Aucun document autorisé

Mobiles interdits Nom : Prénom :

Une petite amélioration de la recherche linéaire consiste à faire avancer vers le début de la liste un élément que l’on recherche et que l’on a trouvé. Ainsi, si on recherche plusieurs fois un même élément, il sera alors amené progressivmeent en début de liste et la recherche sera plus rapide. On parle de rechercheauto- adaptative.

I1. Dans classeListeTridonnée en annexe, écrivez en Java la méthoderecherche- LinéaireAutoqui recherche dans une liste un élément de clé c. Si la clé est trouvée, l’élément est avancé de la moitié de la distance entre le début de la liste et sa position courante. La méthode renvoie l’élément s’il est trouvé ou l’exceptionCléNonTrouvéesi la recherche échoue.

p u b l i c V rechercheLinéaireAuto (C c)

throws CléNonTrouvéeException

{

f o r (i n t i =0; i <l. size (); i ++) { Élément <C ,V > e = l. get (i );

i f (c. compareTo (e. clé ())==0) {

//trouvé ! => l’échanger avec l’élément du milieu si i!=0 i f (i !=0) {

i n t m = i /2;

Élément <C ,V > em = l. get (m );

l. set (m , e );

l. set (i , em );

}

r e t u r n e. valeur ();

} } //non trouvé

throw new CléNonTrouvéeException ();

}

. . . . I2. Soit la liste de valeurs entières11,1,14,4,2,0,0,7,10,5. Écrivez l’évolution

de cette liste après chaque étape du tri par insertion linéaire.

11 1 14 4 2 0 0 7 10 5 1 11 14 4 2 0 0 7 10 5 1 11 14 4 2 0 0 7 10 5

1

1 4 11 14 2 0 0 7 10 5 1 2 4 11 14 0 0 7 10 5 0 1 2 4 11 14 0 7 10 5 0 0 1 2 4 11 14 7 10 5 0 0 1 2 4 7 11 14 10 5 0 0 1 2 4 7 10 11 14 5 0 0 1 2 4 5 7 10 11 14

. . . . I 3. Pour triernvaleurs, quel est le nombre de comparaisons effectuées par ce tri par insertion linéaire dans la pire des cas, dans le cas moyen, dans le meilleur des cas ?

n(n−1)/2,n(n−1)/4,n−1.

. . . . I 4. Écrivez en Java la méthodebooleanestTriée()qui teste si la liste courante

est triée ou pas.

p u b l i c b o o l e a n estTriée () { C cp = l. get (0). clé ();

f o r (i n t i =1; i <l. size (); i ++) { C cc = l. get (i ). clé ();

i f ( cc . compareTo ( cp ) <0) r e t u r n f a l s e; cp = cc ;

}

r e t u r n t r u e; }

. . . .

2

Références

Documents relatifs

Écrivez de façon itérative la fonction itos qui renvoie la conversion d’un entier positif ou nul passé en paramètre, en sa représentation sous forme d’une chaîne de

Écrivez un programme qui lit sur l’entrée standard une opération arithmétique formée de 2 entiers et d’un caractère ( ’+’ , ’-’ , ’*’ ou ’/’ ) et qui écrit sur

Écrivez la fonction creerFichDates qui lit un fichier de texte contenant la suites d’entiers, et qui crée un fichier de dates valides (de type Date ).. Sans l’écrire, vous

Lors d’un appel de fonction ou de procédure, la transmission par valeur consiste à affecter, après évaluation, la valeur du pa- ramètre effectif à son paramètre formel

Au lieu de retirer, à chaque itération, 1 diviseur au dividende et d’incrémenter de 1 le quotient, le diviseur est multiplié successivement par 2 pour trouver son plus grand

qui prend en paramètre une chaîne de caractères, et qui remplace chaque chiffre par le caractère ’_’ dans celle-ci.. La fonction renvoie un pointeur sur le 1er caractère de

Il est nécessaire d’écrire un destructeur pour libérer explicitement la mémoire occupée par le tableau et les 3 points du triangle

En utilisant, la classe std::ifstream et ses méthodes is_open , get , eof et close , écrivez la classe FileInputStream qui permet de lire un fichier d’octets (et uniquement