Aller au contenu

Recherche dichotomique itérative⚓︎

On considère dans cet exercice des tableaux non vides contenant des nombres entiers, tous distincts, triés dans l'ordre croissant.

On cherche à déterminer l'indice d'une valeur cible dans ce tableau à l'aide d'une recherche dichotomique dans sa version itérative.

Écrire la fonction indice qui prend en paramètres le tableau de nombres tableau et la valeur cherchée cible.

Si la cible est dans le tableau, la fonction renverra son indice. Dans le cas contraire, la fonction renverra None.

Attention

Les tableaux des tests secrets peuvent être très grands. Une recherche linéaire naïve prendrait trop de temps lors de l'exécution.

Les tests secrets limitent le nombre de lectures dans le tableau à 100. Si votre code accède à plus de 100 valeurs dans le tableau, une erreur sera levée.

Exemples
🐍 Console Python
>>> tableau = [23, 28, 29, 35, 37]
>>> indice(tableau, 23)
0
>>> indice(tableau, 29)
2
>>> indice(tableau, 37)
4
>>> indice(tableau, 10)
None
>>> indice(tableau, 100)
None
Question

Compléter le script ci-dessous :

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Ctrl+Clic pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
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 : 5/5

.128013Cy1-]/wi_qP+r 79fI;gR2àh)(OEpNînD0ldT,*4Lkéebmc:35a=o[.8t6sSèuxv050K0S0)0Z0i0J0+0o0V0J0Z0+0+0!010)0i0D010406050+0.0U0U0Z0n0c040,0#0J0.140#0G0o020Z0U0D0t0o0v0S1e0n0k0.0S0+050g1b1d1f1h190D04051M1F1P0g1M190K0i0:0|0~10120y0i0u0y0J1%0y0)17050@0T0J0S1Y0 11011$1(1*1(0)1:1=1.0)0n1N0)0y0|1k0+0D0Z0G120w011@1!010r0_0S0G1s0S1.2a2c2h1_2k1=2n0U2p040a0o0l0n0#0D0#0+0i1n1p0=280n0n0S0V2K1F2r0G1N0g262W2325241/0K2t121*0G2m2H1.1V1X0}1^2*0i2,0G0#2:1.0D2P1N2U2W311a2b1p2=2i2`0n1e0J170o0d2T3518342s371_393b3d0w3g2c3i2U2)013n0Z3c040o0X3r2V193u3l123x3z0o0O3D3t353v3J3d0Y3N3F3P3H3w0#3a3y3d0*3U3j361Z3m3Z3o3A0p3(3G3+3I3-3#3A0(3;3W3?3Y3!3K0q3|3k3~3R040d0I433*2?3 3.0d3f1G3h3V444c460d3q4h3s1Q2 1F2:2Z0K252(3X0V2{2z0;1W1N2~0S303h3N054A0=4I4k2i0Q170=0r3N0o3)3Q0r172^1V0V0S4K3=4c16040A4)3}4l17200S0Z0.4/4P1_4,0M4V4X3X0G170V0i1;4(4p2V503~4,0z0W3U0o5g4W4*384S0S0T1m4 5j1_0#170!5p4:2i0U0i174958185h5i5w3m172k0G5v4{125s045u5C5F5M3w0T172w4`4b2i4,4.5C5a4;044?4^5Y3v5c5L5Z5r170e5:3v5y174g31065E5(4Q170h1$1=5^515l5n0)663~5O020J0)0t5Q315S5;3I5I2^5-3X4,5e5C5~5E5h605H045y1*0S4_5R6x5N5t6b4+175$335q6m040=696I2i5O0m6S6y5J6p5b170z6W6G040g0g6%015`044o5}6v6w6N014R040i4U6E6@520454566,6d6f0t6,6 5+6D6M5G124,0$6Z5)6A0i6C7g5!170f6s6;6=6v6F3w6n5K6}7c015O6i3h6k3Q177i7k7x5T5O5@7I6l6-5z475f7r7t6_0S1*6|6j7t6 71657M3v7A7B3s7D675*0Z565,5%6@7e7l6y7G7a4J7?7n7p4i7r7s6@6_2P0)0.0n7w7Y6~7F0_7j7{3s6u6=7T177V0+577b5T6r7R815g7Z685o7%3X7A778c6B8f2V7,6c176V8x3~6.5|806?7y840?87897C7T0V170E1o8n4i1F4M4H4r8(0g4u1F0)4w8-2$2X7/1=2W4u1L4O7N2P0U0j0r0Z0Q0S0j0y0X171x1z1B1D0o7 4q1S3i2:3v0Z0K0U1o2J0i1o0o2^0r5O1L9i9k9m2K0e140)21041x0V0y0S0n9F1?4$0y0#0)0#5y9a9q0)0R0n0Z140:1?0W0o0x280G2n0F23571T1O040s0J0o0+000Z0u2J0o2M0J9@0J0u3Z2J0y2y9{1?2P9J9I9G9{0i9F9N9P0i9R3lag1C0%1Q3i8+4E1U1W9v9l0G9n9p9r9t1Oas9x9o0G9z2J9C0P0Z0oa79Ga99K1?9}4#ac9K0.0o7`am8`0P1?0V3y0V0.9;9|00aQ4%9{aT7`aU9U2J1?9O1m0S9s0i0{9a0J9a0{4A1d2m0@0i2P0+0%0o0s540o9p2~2F2H1?4L4B3v1{1)1+1-8{7E6z8d7H8a7y8z8J6J4-7^6O6Q8wbu7J8H8A046Y7=7y5/bx6T176*6,6.6:4J0g8%04al9f8`0B0n0M9{2cb09Hb40G0{0~0G0u9^9b2Mbe0u9V1I2K28b20o1=0o0bb%0~0ob40Jc00=0{b37j0nca0+0)b 0i5y9T0Sb80baZa#a%4W8%bk1+1}1,2q7y6 aVbN5=5P6,5#bA7u6P5mbD8U6@6UbHbJ8o7NbMbE7N5ObQcB12bS4KbV4B3A0D6Ccg2b0na`ca0/0V0R0=0n0|0?0)a?0^c7aOcia=b80C1pa_0r0?b%2Ib b?6C0/9q0G4$9bbi2M3Xblcvbo8ucI6R5%c#4N0o0?crbjdicubncx5T6 cPbUbW9=1ocgb_2c0K0+c36Cc?0+9Pa4dgaZ3~djdybp7-bC6acX7zbGd#dB6odpdEc(1m9{0R2b109Hb aI0:3ydNchcjclaW9.0Hb)c@0|0 bc36cpc0aPddaRa-aUbsaT2m0o1m8d0+2ccgc40~0n0ud{a)2^c_0nd_c|9cdudhdUdx1~dz7Nczef736Hd(8vd!cT7(d%eO6q6KcGd)8T7+7t7KbHdZcGcScLbvbP6+d#cZd+c$bY9-1Me1b-d8e40{2~0R8m0G0)dM0obe1;0-a42,9=1?2G8mf1e5a!b$ds1p0l0c261odMcae~cc0{0G00dGfb0{2Mc6e9c~c_b80L0#a^c-b%0,0ib fr1p0Zd_9`1eau0Da%0Ra5fp9P0Tb60o0r0J9N0@e~b.f82Ef3a48m9V9`0Z0Dc+aT6s9-9h3X9jatavd20/1s0D9C9uf`9wau9y9A9C0C0/1yg19,9gardw1|dW7t2v2m2o172B0b1odPc0fhfjeW594G8{324JbW7t0u4,020u6ggGgIgH1veUeMeJcDe,4Z6/0%5BeR8G040N0NbR7P480w3C6tgDgFgLgJ0tg.4WbKdA7v4V8tcMeKgW4c0UgS0wgUgPgZg#5{0Ig(gP8Ig|5xg$4a3vgE17g.hhgLg;cQbqe#d#cNeLbId*6j8F4c0V0d1703d/d;8m2ye~a5e42b549Thd3Xa04!0G7X8#6@hf04higK6ghk7|bLeTg=eGgOhoeQe(g?hrgwdX6!046$h(6)h46/g^7thwhyhA1^1yb3hFa!hH2JfSf!cdhFc4dPb2hK3~hM6`hOic4chShUg/hjgNdncKeXg`04h9h*cRh!hl7-dCiqe)047Lha6yhnixh/h;iE6(e+iK7O17bT8ggD5O0(0%0q0(0(0O0*0Y0*0p0O0X4f0Y0(0S0m0X0I3:g*dq8*gy4tapi_0:an8_4t0?c{0+04.