itc:tps:tp5:exercice1
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| itc:tps:tp5:exercice1 [2022/01/01 19:29] – goupillwiki | itc:tps:tp5:exercice1 [2022/03/24 18:28] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. 80.215.85.166 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Tri par insertion dichotomique ====== | ====== Tri par insertion dichotomique ====== | ||
| + | |||
| + | Le tri par insertion est comparable au [[itc: | ||
| + | |||
| + | <WRAP tip>Vous pouvez aussi trouver des cours dans la partie 1ere NSI de ce site : une {{ : | ||
| + | |||
| ===== Principe ===== | ===== Principe ===== | ||
| Ligne 8: | Ligne 13: | ||
| * sinon on prend le deuxième et on le compare au premier pour les mettre dans le bon ordre. | * sinon on prend le deuxième et on le compare au premier pour les mettre dans le bon ordre. | ||
| * Si on suppose les '' | * Si on suppose les '' | ||
| + | |||
| + | ===== Algorithme ===== | ||
| + | |||
| + | <code lang-none> | ||
| + | FONCTION tri_par_insertion | ||
| + | ENTRÉE: tableau_a_trier, | ||
| + | La fonction ne renvoie rien, le tableau est trié en place | ||
| + | DÉBUT | ||
| + | soit n la longueur de tableau_a_trier | ||
| + | POUR i allant de 1 à n - 1 FAIRE | ||
| + | soit item l' | ||
| + | soit j = i | ||
| + | TANT QUE j > 0 et l' | ||
| + | copier l'item de rang j-1 au rang j | ||
| + | j passe à j-1 | ||
| + | FIN | ||
| + | copier item au rang j | ||
| + | FIN | ||
| + | FIN | ||
| + | </ | ||
| + | |||
| + | Ici, le tri se fait en place, ce qui est une bonne chose du point de vue de l' | ||
| + | change pas le principe d’insertion : il y a deux boucles imbriquées, | ||
| + | |||
| + | <WRAP box> | ||
| + | - Traduisez cet algorithme en Python et testez. | ||
| + | - Écrivez une fonction '' | ||
| + | - À l’aide de la fonction '' | ||
| + | $N = 10^7$ et $n$ dans $\left\lbrace 100, 1000, 10 000\right\rbrace$. | ||
| + | </ | ||
| + | |||
| + | //On prouvera plus tard la correction du programme et on étudiera sa complexité.// | ||
| + | |||
| + | ===== L' | ||
| + | |||
| + | En profitant du fait qu'au moment de chaque insertion, le début de liste est déjà trié, on peut | ||
| + | procéder à une insertion dichotomique selon l' | ||
| + | |||
| + | <code lang-none> | ||
| + | FONCTION recherche_rang_insertion | ||
| + | ENTRÉES | ||
| + | L: un tableau | ||
| + | a, b: deux indices de L, a <= b. L[a:b] est trié dans l' | ||
| + | e: un élément de même nature que ceux de L | ||
| + | SORTIE | ||
| + | l' | ||
| + | DÉBUT | ||
| + | TANT QUE a != b RÉPÉTER | ||
| + | indice_milieu est (a + b) // 2 | ||
| + | m est la valeur de L en indice_milieu | ||
| + | SI m <= e ALORS | ||
| + | continuer avec la zone [indice_milieu + 1 : b] | ||
| + | SINON | ||
| + | continuer avec la zone [a: | ||
| + | FIN | ||
| + | FIN | ||
| + | RENVOYER a | ||
| + | FIN | ||
| + | </ | ||
| + | |||
| + | <wrap info>On montre que la complexité dans le pire des cas du tri avec insertion dichotomique est en $n\, | ||
| + | |||
| + | <wrap tip> | ||
| + | |||
| + | On prévoit une fonction annexe pour le décalage : | ||
| + | |||
| + | <code lang-none> | ||
| + | FONCTION decaler | ||
| + | ENTRÉES | ||
| + | L: un tableau | ||
| + | a, b: deux indices de L, a <= b | ||
| + | SORTIE | ||
| + | Pas de sortie, L est modifié en place. | ||
| + | Les éléments de rangs dans a:b sont décalés d'une place à droite | ||
| + | DÉBUT | ||
| + | POUR i ALLANT de b-1 à a PAR PAS DE -1, FAIRE: | ||
| + | copier L[i] une case à droite | ||
| + | FIN | ||
| + | FIN | ||
| + | </ | ||
| + | |||
| + | Et la fonction de tri par insertion dichotomique : | ||
| + | |||
| + | <code lang-none> | ||
| + | FONCTION tri_par_insertion_dichotomique | ||
| + | ENTRÉES | ||
| + | L: liste d' | ||
| + | SORTIE | ||
| + | Pas de sortie, L est triée en place | ||
| + | DÉBUT | ||
| + | soit n la taille de L | ||
| + | POUR i ALLANT DE 1 À n-1 FAIRE | ||
| + | soit e l' | ||
| + | j = recherche point insertion de e dans L[0:i] | ||
| + | decaler L[j:i] | ||
| + | écrire e à la position j | ||
| + | FIN | ||
| + | FIN | ||
| + | </ | ||
| + | |||
| + | <WRAP box> | ||
| + | * Écrivez, dans l' | ||
| + | * Testez et vérifiez si l' | ||
| + | </ | ||
itc/tps/tp5/exercice1.1641061798.txt.gz · Dernière modification : de goupillwiki
