Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cours
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
algorithmique
cours
Commits
6a7f0d88
Commit
6a7f0d88
authored
1 month ago
by
paul.albuquer
Browse files
Options
Downloads
Patches
Plain Diff
Edit cours_22.md
parent
8bea934d
No related branches found
No related tags found
No related merge requests found
Pipeline
#40211
passed
1 month ago
Stage: test
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
slides/cours_22.md
+9
-9
9 additions, 9 deletions
slides/cours_22.md
with
9 additions
and
9 deletions
slides/cours_22.md
+
9
−
9
View file @
6a7f0d88
...
@@ -33,7 +33,7 @@ date: "2025-05-09"
...
@@ -33,7 +33,7 @@ date: "2025-05-09"
. . .
. . .
0.
Rechercher la feuille (la page a aucun enfant) où insérer;
0.
Rechercher la feuille (la page a aucun enfant) où insérer;
1.
Si la page n'est pas pleine insérer dans l'ordre croissant.
1.
Si la page n'est pas pleine
,
insérer dans l'ordre croissant.
2.
Si la page est pleine, on sépare la page en son milieu :
2.
Si la page est pleine, on sépare la page en son milieu :
1.
On trouve la médiane,
`M`
, de la page;
1.
On trouve la médiane,
`M`
, de la page;
2.
On met les éléments
`< M`
dans la page de gauche de
`M`
et les
`> M`
dans la page de droite de
`M`
;
2.
On met les éléments
`< M`
dans la page de gauche de
`M`
et les
`> M`
dans la page de droite de
`M`
;
...
@@ -92,7 +92,7 @@ date: "2025-05-09"
...
@@ -92,7 +92,7 @@ date: "2025-05-09"
*
Si la page est pleine:
*
Si la page est pleine:
*
On trouve la valeur médiane
`M`
de la page (quel indice?);
*
On trouve la valeur médiane
`M`
de la page (quel indice?);
*
On crée une nouvelle page de droite;
*
On crée une nouvelle page de droite;
*
On copie les valeur à droite de
`M`
dans la nouvelle page;
*
On copie les valeur
s
à droite de
`M`
dans la nouvelle page;
*
On promeut
`M`
dans la page du dessus;
*
On promeut
`M`
dans la page du dessus;
*
On connecte le pointeur de gauche de
`M`
et de droite de
`M`
avec l'ancienne et la nouvelle page respectivement.
*
On connecte le pointeur de gauche de
`M`
et de droite de
`M`
avec l'ancienne et la nouvelle page respectivement.
...
@@ -121,9 +121,9 @@ struct element
...
@@ -121,9 +121,9 @@ struct element
## Les fonctions utilitaires (5min matrix)
## Les fonctions utilitaires (5min matrix)
```
C
```
C
booléen est_feuille(page) // la page est
elle une feuille?
booléen est_feuille(page) // la page est
-
elle une feuille?
entier position(page, valeur) // à quelle indice
on
insère?
entier position(page, valeur) // à quelle indice insère
-t-on
?
booléen est_dans_page(page, valeur) // la valeur est dans la page
booléen est_dans_page(page, valeur) // la valeur est
-elle
dans la page
?
```
```
. . .
. . .
...
@@ -356,7 +356,7 @@ page ajouter_niveau(page, element)
...
@@ -356,7 +356,7 @@ page ajouter_niveau(page, element)
. . .
. . .
*
Un élément à droite, comment on fait?
*
Un élément à droite, comment on fait?
*
Remonter
`7`
, serait ok si racine, mais... c'est pas forcément.
*
Remonter
`7`
, serait ok si racine, mais... c
e n
'est pas forcément
le cas
.
*
On redistribue les feuilles.
*
On redistribue les feuilles.
. . .
. . .
...
@@ -388,7 +388,7 @@ page ajouter_niveau(page, element)
...
@@ -388,7 +388,7 @@ page ajouter_niveau(page, element)
. . .
. . .
*
`8`
est seul, c'est plus un B-arbre :
*
`8`
est seul, c
e n
'est plus un B-arbre :
*
Fusionner le niveau 2 et redistribuer, comment?
*
Fusionner le niveau 2 et redistribuer, comment?
. . .
. . .
...
@@ -404,7 +404,7 @@ page ajouter_niveau(page, element)
...
@@ -404,7 +404,7 @@ page ajouter_niveau(page, element)
## Algorithme pour les feuilles!
## Algorithme pour les feuilles!
*
Si la clé est supprimée d'une feuille:
*
Si la clé est supprimée d'une feuille:
*
Si on a toujours
`n`
(ordre de l'arbre) clés dans la feuille on décale simplement les clés.
*
Si on a toujours
`n`
(ordre de l'arbre) clés dans la feuille
,
on décale simplement les clés.
*
Sinon on combine (récursivement) avec le nœud voisin et on descend la clé médiane.
*
Sinon on combine (récursivement) avec le nœud voisin et on descend la clé médiane.
# Les B-arbres: suppression
# Les B-arbres: suppression
...
@@ -442,7 +442,7 @@ page ajouter_niveau(page, element)
...
@@ -442,7 +442,7 @@ page ajouter_niveau(page, element)
## Algorithme pour les non-feuilles!
## Algorithme pour les non-feuilles!
*
Si la clé est supprimée d'une page qui n'est pas une feuille:
*
Si la clé est supprimée d'une page qui n'est pas une feuille:
*
On échange la valeur avec la valeur de droite de la page de gauche
*
On échange la valeur avec la valeur de droite de la page de gauche
.
*
On supprime comme pour une feuille!
*
On supprime comme pour une feuille!
## Et maintenant des exercices par millions!
## Et maintenant des exercices par millions!
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment