---
# System prepended metadata

title: Correction Examen blanc (TD5)

---

# 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.

