Tri par insertion

La méthode du tri par insertion repose sur un double parcours de la liste à trier :

  • un parcours de gauche à droite commençant au deuxième élément avec un indice \(i\). On a la garantie que la liste jusqu'à l'indice \(i\) exclu est triée ;
  • un parcours de droite à gauche du début de la liste jusqu'à l'indice \(i\) pour y insérer à la bonne place l'élément d'indice \(i\). Ce parcours utilise un indice \(j\).

tri par insertion

La fonction tri_insertion suivante prend en paramètre un tableau de nombres tableau et le trie dans l'ordre croissant en utilisant cette méthode.

Il s'agit d'un tri en place ce qui signifie que le tableau passé en paramètre sera directement modifié. Il est inutile de le renvoyer.

Compléter la fonction pour qu'elle réponde à la spécification demandée.

Exemples
>>> tableau_0 = [9, 5, 8, 7, 6]
>>> tri_insertion(tableau_0)
>>> tableau_0
[5, 6, 7, 8, 9]
>>> tableau_1 = [2, 5, -1, 7, 0, 28]
>>> tri_insertion(tableau_1)
>>> tableau_1
[-1, 0, 2, 5, 7, 28]
>>> un_seul = [9]
>>> tri_insertion(un_seul)
>>> un_seul
[9]
🐍 Console Python
>>> tableau_vide = []
>>> tri_insertion(tableau_vide)
>>> tableau_vide
[]
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10
.128013fe)à6i1p3m_:Svk-(q5rtg.=sîwcd;,Po/]haR2n bl0éj[948uLy7050D0c0v0L0g0R0z0P0C0R0L0z0z0y010v0g0i010406050z0Z0k0k0L0u0#040n0H0R0Z0`0H0O0P020L0k0i0E0P0M0c140u0s0Z0c0z050I111315170 0i04051C1v1F0I1C0 0D0g0o0/0;0?0^0K0g0w0K0R1T0K0v0}050*0Q0R0c1O0=0@011S1U1W1U0v1$1(1!0v0u1D0v0K0/1a0z0i0L0O0^0N011*1Q010b0,0c0O1i0c1!2022271,2a1(2d0k2f040a0P0G0u0H0i0H0z0g1d1f0(1~0u0u0c0C2A1v2h0O1D0I1|2M1_1{1`1#0D2j0^1W0O2c2x1!1L1N0:1+2W0g2Y0O0H2$1!0i2F1D2K2M2@10211f2(282-0u140R0}0h2J2{0~2`2i2}1,2 310}0N3522372K2V013c0L32040j3g2L0 3j3a0^3m3o0X3r3i2{3k3x0}0t3A3t3C3v3l0H303n0}0f3H382|1P3b3M3d040$3R3u3U3w3W3O040Y3!3J3$3L3N3o0W3A1G2=1v2$2P0D1{2U3K0C2.2p0%1M1D2;0c2?363?400(48393.0p0}0(0b3?3#2)010B0}0P4k3-4m0O0b0}1_0g0l2+0z0c0u2I1w494l280|040r4r4e4t4w0L1%0c0L0Z4M3T4m4J0d0m3H0P4$4q4H3b0}0O3A4(4s280H0}0y4-3S3D0Q0}2m4V3k4J4L4F3h4^3K0O4P4R4T4}3K4Y4#4%534f0}0b3M4@4)3w0}0g5j4/1,0H4o042+5o4N2~4`040u220w0c593.4 5E4m0k0g335H4I0}0F5v4W2~4+5M1,4Y4!513s4%5!4.5w4*040U5Q3k4;044?5Y045$5R5(5n5:065#5d5k3l0}0o3n0c0Z0u0l0L4z0O4B2F0u5+3K5-5/2@5=3D561(585:5e4X0}0V5U5l5t6r014J0J5c5{6n284g040B1S1(6c3.555)6H4m5-020w0v0E6L285J0}0S6S5q5s220D6X6s601(636567694C6$016N0R6Q6/6J1?4S4U6m5}4J6q6|5p6s5*5:6h6d0}0q6/6U0434705%0^6w5X2@5`5{5#6A5(6_6l2_6}6p6u6J737q716v0}6x747m0^6e6@6j6`6u6~7t0}7v36753.5-787B5}7a7c7w7e7y047A7i7k7l5}7u6/7E7S7x7)7,7X7Q795K7b6y7%7-7G7p4G7x7J7d5?727I7z7*4=7F046(6264664A4C6.5_1v4b473@8j0I3`1v0v3|8o2S2N4Q1(2M3`1B4d81012F0k0l0b0L0p0c0l0K0j0}1n1p1r1t0P7h491I371C0!003n0w3M2z0K2o0P0D0Z0P4x0P210u0P8d4D0g1e0P1t0v0P0Z1f8Z8#1|8(3a0g8P0P0e1~0O2d0A1_0c0x4q8U8y0!0L0P600u0g8u1)0g0C0g0P2-130T1)058i88616*8c688e6b0I9z8_0z8{0z0H0Z0o2c8{9u0k9w4q9z0:5D9H41040x1G378m0)0+0-04.