# Correction Examen blanc (TD5) ## Question 1: Déroulages [Les déroulages sont ici](https://docs.google.com/spreadsheets/d/1R3zuzhH6QuhK3x8xLb7GDz84JvBeo2S4_P39Qa5eZBs/edit?usp=sharing) ## Question 2: Calcul de $f(N)$ pour ```g``` Le pire cas est tout le temps puisque la fonction est obligée de parcourir tout le tableau "t2". Déroulons l'algorithme pour 2 cas de N = 2 et N = 3. A partir des déroulages concrets on produit les déroulages abstraits. Dans les déroulages abstraits, pour N = 2 on obtient 9 losanges et pour N = 3 on obtient 11 losanges. on peut en déduire que f(N) = 1 + N+1 + N+3. On en déduit $f(N)= 2N+5$. ## Question 3: Classe de complexité de ```g``` Donc la complexité de la fonction est en $O(f(N)) = O(2N +5) = O(N)$. ## Question 4: Définir une fonction ```h``` plus efficace que ```g``` Version 1. ```java= public static int [] h1(int [] t, int k) { int[] tab= new int[t.length+1]; boolean inser= false; int j=0; for(int i=0; i<t.length; i++) { if(k>t[i]) { tab[j]=t[i]; }else if(!inser) { tab[j]=k; inser=true; }else tab[j]=t[i]; j++; } return tab; } ``` ## Question 5: Pire cas pour ```h``` ## Question 6: Déroulages de ```h``` ## Question 7: Calcul de $f(N)$ pour ```h``` Sur ```h1``` il y a des chances que ça soit $f(N)= N+2$. A vous de vérifier! ## Question 8: Classe de complexité de ```h``` $O(f(N))= O(N+2) = O(N)$ ## Question 9: Que peut-on en déduire sur ```h```? ```g``` et ```h1``` sont dans la même classe de complexité, leurs temps de calculs seront donc du même ordre de grandeur. Cependant pour la première on a $f(N)= 2N +5$ et $f(N)=N+2$ pour la seconde donc les temps de calculs de la seconde devraient être légèrement inférieurs.