mp2i-info/td2/td2.md
2025-10-07 14:38:27 +02:00

39 lines
690 B
Markdown

# TD2
## Algorythme dichotomique en C
```c
int f(int t[], int target, int len) {
int min = 0;
int max = len-1;
while (min < max) {
int i = (min+max)/2
int val = t[i];
if (target < val) {
max = i;
} else if (target > val) {
min = i;
} else {
min = i;
max = i;
}
}
return min;
}
```
Preuve de terminaison :
- **variant :** $\lfloor log_2(\frac{max-min}{2}) \rfloor$
Preuve de correction :
- **invariant :** $min \leq i_{target} \leq max$
- **après la boucle :** $min = max$
donc $min \leq i_{target} \leq min$
donc $i_{target} = min$
Complexité : $O(log_2(n))$