La condition k >= 0 deviendra alors forcément fausse au bout d'un certain temps. Nous avonc donc prouvé la terminaison de l'algorithme. Terminaison
L'algorithme du Tri par insertion termine
Variant de Boucle
On dit que la valeur k est un Variant de Boucle. C'est une notion théorique (ici illustrée de manière simple par la valeur k) qui permet de prouver la bonne sortie d'une boucle et donc la terminaison d'un algorithme. Correction de l'Algorithme ⚓︎
Nous savons maintenant que notre algorithme termine, mais Est-on sûr que notre algorithme est correct: va-t-il bien trier notre liste? Les preuves de correction sont des preuves théoriques. La preuve ici s'appuie sur le concept mathématique de récurrence. Principe du Raisonnement par Récurrence
Une propriété \(P(k)\) est vraie (pour tout entier \(k\)) si:
\(P(0)\) (par exemple) est vraie
Pour tout entier naturel \(k\), si \(P(k)\) est vraie alors \(P(k+1)\) est vraie. Ici, pour tout entier \(k\) compris entre \(0\) et \(n-1\) (càd longueur(liste)-1), la propriété \(P(k)\) serait: « la sous-liste (de longueur \(k\)) des \(k\) premières valeurs est triée dans l'ordre croissant.
Trie Par Insertion Professionnelle Des Jeunes
Principe
Visionner la séquence vidéo proposée. Lien
Le tri par insertion est le tri effectué par le joueur de carte. En supposant que l'on maintienne une partie triée, on décale les cartes de cette partie, de manière à placer la carte à classer ( voir video). En informatique, on va très souvent travailler avec un tableau et le parcourir de la gauche vers la droite, en maintenant la partie déjà triée sur sa gauche (voir lien wikipedia). Concrètement, on va décaler d'une case vers la droite tous les éléments déjà triés, qui sont plus grands que l'élément à classer, puis déposer ce dernier dans la case libérée. Algorithme
Notation
La notation t[0.. i-1] désigne ici les premiers éléments d'un tableau t, c'est-à-dire t[0], t[1],..., t[i-1]. Algorithme Tri_insertion(t)
---------------------------
t: tableau de n éléments comparables (t[0.. n-1])
Pour i allant de 1 à n-1:
amener t[i] à sa place parmi t[0.. i-1]
Implémentation en python
On commence par donner une réalisation de amener t[i] à sa place parmi t[0.. i-1] en écrivant une fonction place(t, i) qui amène l'élément d'index à sa place parmi les éléments d'index 0 à déjà classés.
Tri Par Insertion Principe
Il s'agit d'un algorithme de tri basé sur une comparaison sur place. Ici, une sous-liste est maintenue qui est toujours triée. Par exemple, la partie inférieure d'un tableau est conservée pour être triée. Un élément qui doit être «inséré» dans cette sous-liste triée doit trouver sa place appropriée et ensuite il doit y être inséré. D'où le tri par insertion de nom. Implémentation en C
#include
#include
#define MAX 7
int intArray[MAX] = {4, 6, 3, 2, 1, 9, 7};
void printline(int count) {
int i;
for(i = 0;i < count-1;i++) {
printf("=");}
printf("=\n");}
void display() {
printf("[");
// navigate through all items
for(i = 0;i < MAX;i++) {
printf("%d ", intArray[i]);}
printf("]\n");}
void insertionSort() {
int valueToInsert;
int holePosition;
// loop through all numbers
for(i = 1; i < MAX; i++) {
// select a value to be inserted. valueToInsert = intArray[i];
// select the hole position where number is to be inserted
holePosition = i;
// check if previous no. is larger than value to be inserted
while (holePosition > 0 && intArray[holePosition-1] > valueToInsert) {
intArray[holePosition] = intArray[holePosition-1];
holePosition--;
printf(" item moved:%d\n", intArray[holePosition]);}
if(holePosition!
Trie Par Insertion.Fr
On «duplique» la variable i en une variable k.
On se positionne sur l'élément d'indice k. On va faire «reculer» cet élément tant que c'est possible. On ne touche pas à i. Tant qu'on n'est pas revenu au début de la liste et qu'il y a une valeur plus grande à gauche. On échange de place avec l'élément précédent. Notre élément est maintenant à l'indice k - 1. La boucle peut continuer. Utilisation ⚓︎
>>> maliste = [ 7, 5, 2, 8, 1, 4]
>>> tri_insertion1 ( maliste)
>>> maliste
[ 1, 2, 4, 5, 7, 8]
Tri par Insertion (version optimisée) ⚓︎
Observez l'animation ci-dessous, et comparer-la avec la version initiale.
Trie Par Insertion Sociale Et Professionnelle
On stocke dans une variable cle notre valeur courante
On démarre l'étude des valeurs à gauche de notre valeur courante
Tant qu'on trouve une valeur supérieure à notre valeur courante, et qu'on n'est pas revenus au début de la liste. On décale cette valeur de un rang vers la droite. On se repositionne sur la valeur à gauche de notre valeur courante. On s'est arrêté quand la valeur n'était pas supérieure: on insère notre valeur courante juste à droite de notre position d'arrêt. >>> tri_insertion2 ( maliste)
Terminaison de l'Algorithme ⚓︎
Est-on sûr que notre algorithme va s'arrêter (un jour)? Le programme est constitué d'une boucle while imbriquée dans une boucle for. Seule la boucle while peut provoquer une non-terminaison de l'algorithme. Observons donc ses conditions de sortie:
while k >= 0 and l [ k] > cle:
La condition l[k] > cle ne peut pas être rendue fausse avec certitude. Par contre, la condition k >= 0 sera fausse dès que la variable k deviendra négative. Or la ligne
k = k - 1 nous assure que la variable k diminuera à chaque tour de boucle.
La liste ( a 1, a 2,..., a n) est décomposée
en deux parties: une partie triée ( a 1, a 2,..., ak)
et une partie non-triée ( a k+1, a k+2,..., a n);
l'élément a k+1 est appelé élément
frontière (c'est le premier élément non trié). concrète itérative
La suite ( a 1, a 2,..., a n) est rangée dans
un tableau T[... ] en mémoire centrale. Le tableau contient une partie
triée (( a 1, a 2,..., ak) en violet à gauche)
et une partie non triée (( a k+1, a k+2,..., a n)
en blanc à droite). En faisant varier j de k jusqu'à 2, afin de balayer toute la
partie ( a 1, a 2,..., a k) déjà rangée,
on décale d'une place les éléments plus grands que l'élément
frontière:
tantque a j-1 > a k+1 faire
décaler a j-1 en
a j;
passer au j précédent
ftant
La boucle s'arrête lorsque a j-1 < a k+1, ce qui
veut dire que l'on vient de trouver au rang j-1 un élément a j-1
plus petit que l'élément frontière a k+1, donc
a k+1 doit être placé au rang j.
2745948946 Jack Et Le Haricot Magique
2745948946 Jack Et Le Haricot Magique
Disciplines
L'oral et Explorer le monde du vivant, des objets et de la matière
Niveaux
PS, MS. Auteur
C. MILLERAND
Objectif
- Comprendre des textes écrits sans autre aide que le langage entendu. - Raconter une histoire entendue
- Emettre une hypothèse
- Décrire une image
Relation avec les programmes
Cette séquence n'est pas associée aux programmes. Déroulement des séances
1
Découverte de l'album
Dernière mise à jour le 19 avril 2017
Discipline / domaine
L'oral
Durée
20 minutes (2 phases)
Matériel
- album de Jack et le haricot magique
1. Découverte de l'objet album | 10 min. | réinvestissement
Présenter l'album aux enfants. Leur demander d'identifier: - les pages - la couverture - le titre - le nom de l'auteur Demander aux élèves de décrire l'illustration de la couverture: que voient-ils? quel personnage? que fait-il? Maternelle / Mathématiques. Demander aux élèves s'ils ont une hypothèse sur l'histoire. 2. Lecture de l'album - 1ère partie | 10 min. | découverte
Lire l'histoire jusqu'à ce que le haricot magique pousse.
Maternelle / Mathématiques
EN 2013, à la période 4, j'ai travaillé à nouveau sur le codage d'un conte. Celui de Boucle d'or, d'après la... » Lire la suite
Fiches de reconnaissance visuelle, de lecture et d'écriture
Colorie le haricot identique au modèle
Colorie les paires d'une même couleur
Colorie la phrase identique au modèle
Entoure la lettre "a"
Reconstitue les mots à partir des syllabes
Colle sous la bonne image
Ecris
Fiches de mathématiques
Colorie la quantité demandée dans le rectangle
idem
Indique dans le tableau combien il y a de chaque sorte
Colle les étiquettes dans l'ordre en suivant le numéro qu'elles portent
Regroupe les haricots par 3