Skip to content
Snippets Groups Projects
Verified Commit 1e5d5482 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

last commit for tonight

parent 7ee945ff
No related branches found
No related tags found
No related merge requests found
......@@ -287,7 +287,7 @@ patat:
# Les B-arbres
## Exercice
## Exercice (matrix, 15min)
* Insérer 20, 40, 10, 30, 15, 35, 7, 26, 18, 22, 5, 42, 13, 46, 27, 8, 32, 38, 24, 45, 25, 2, 14, 28, 32, 41,
* Dans un B-arbre d'ordre 2.
......@@ -397,11 +397,14 @@ struct element
# Les B-arbres
\footnotesize
## Les fonctions utilitaires (5min matrix)
```C
booléen est_feuille(page) // la page est elle une feuille?
entier position(page, valeur) // à quelle indice on insère?
booléen est_dans_page(page, valeur) // la valeur est dans la page
```
. . .
......@@ -414,6 +417,9 @@ entier position(page, valeur)
tant que i < page.nb && val >= page.tab[i]
i += 1
retourne i
booléen est_dans_page(page, valeur)
i = position(page, valeur)
retourne (i > 0 && page.tab[i] == valeur)
```
# Les B-arbres
......@@ -448,6 +454,125 @@ rien liberer_memoire(page)
# Les B-arbres
## Les fonctions (5min matrix)
```C
page recherche(page, valeur) // retourner la page contenant
// la valeur ou vide
```
. . .
```C
page recherche(page, valeur)
si est_dans_page(page, valeur)
retourne page
sinon si est_feuille(page) && !est_dans_page(page, valeur)
retourne vide
sinon
recherche(page.tab[position(page, valeur)], valeur)
```
# Les B-arbres
## Les fonctions
```C
page inserer(page, valeur) // inserer une valeur
```
. . .
```C
page inserer(page, valeur)
element = nouvel_element(valeur)
inserer_element(page, element) // on change elmement pour savoir s'il faut le remonter
si element.page != vide
page = ajouter_niveau(page, element) // si on atteint le sommet!
retourne page
```
# Les B-arbres
## Les fonctions
```C
rien inserer_element(page, element) // inserer un element et voir s'il remonte
```
. . .
```C
rien inserer_element(page, element)
si est_feuille(page)
placer(page, element)
sinon
sous_page = page.tab[position(page, element)].page
inserer_element(sous_page, element)
si element.page != vide
placer(page, element)
```
# Les B-arbres
## Les fonctions (5min matrix)
```C
rien placer(page, element) // inserer un élément
```
. . .
```C
rien placer(page, element)
i = position(page, element.clé)
pour i de 2*page.ordre à i+1
page.tab[i+1] = page.tab[i]
page.tab[i+1] = element
page.nb += 1
si page.nb > 2*page.ordre
scinder(page, element)
```
# Les B-arbres
## Les fonctions (5min matrix)
```C
rien scinder(page, element) // casser une page et remonter
```
. . .
```C
rien scinder(page, element)
new_page = new_page(page.ordre)
new_page.nb = page.ordre
pour i de 0 à ordre inclu
new_page.tab[i] = page.tab[i+ordre+1]
element.clé = page.tab[ordre+1].clé
element.page = new_page
```
# Les B-arbres
## Les fonctions (5min matrix)
```C
page ajouter_niveau(page, element) // si on remonte à la racine...
// on doit créer une nouvelle racine
```
. . .
```C
page ajouter_niveau(page, element)
tmp = nouvelle_page(page.ordre)
tmp.tab[0].page = page
tmp.tab[1].clé = element.clé
tmp.tab[1].page = element.page
retourne tmp
```
<!-- # Les B-arbres -->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment