moyen
Recherche dichotomique (indice)
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 lèvera une erreur.
Lever une erreur
Python permet de lever des erreurs en utilisant la syntaxe raise < Erreur > .
Dans le cas présent, on fera raise ValueError ( "La valeur cible n'est pas dans le tableau" ) .
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
>>> tableau = [ 23 , 28 , 29 , 35 , 37 ]
>>> indice ( tableau , 23 )
0
>>> indice ( tableau , 29 )
2
>>> indice ( tableau , 37 )
4
.128013zl7/LEDr0n3_éhf45(Ovtb1c9eS[iIP8p-wC.;à,a: +q]èmxksRV=og)2du6y050+0A0v0P0D0c0Z0R0y0c0P0Z0Z0$010v0D0H010406050Z0,0W0W0P0i0.040B0%0c0,120%0k0R020P0W0H0M0R0!0A1c0i0T0,0A0Z050e191b1d1f170H041D1K051N0e1N1P1K170+0D0u0`0|0~100o0D0(0o0c1%0o0v15050=0w0c0A1Y0}0 011$1(1*1(0v1:1=1.0v0w0%0+1f1/0i1L0v0o0`1i0Z0H0P0k100*011@1!010p0@0A0k1q0A1.2f2h2m1_2p1=2s0W2u040a0R0F0i0%0H0%0Z0D1l1n0:2d0i0i0A0y2P1D2w0k1L0e2b2#0v29282a0+2y101*0k2r2M1.1V1X0{1^2/0D2;0k251W1.0H2U1L2Z2#36182g1n2`2n2 0i1c0c150R0x2Y3a16392x3c1_3e3g3i0*3l2h3n2Z2.013s0P3h040R0l3w2!173z3q103C3E0R0q3I3y3a3A3O3i0r3S3K3U3M3B0%3f3D3i0-3Z3o3b1Z3r3(3t3F0d3-3L3:3N3=3*3F0G3_3#3{3%3)3P0z413p433W040x0j483/2{443?0x3k1E3m3!494h4b0x3v4m3x4o4g3d3}3E0x3H4u3J3.3V4z150x3R4D3T4p4y454I3Y4L1M341D2^2(0+2,3A0y252E0/1W1L330A353m3S054#0:4-4N1_0Y150:0p4/3`4h0J3i4}424q0p152}1V0y0A524@1014040s5b4x3r15200A0P0,5h3A5e0O3S0R4F3$0k150y0D1;5a4S4~2n5e0)0Q3Z0R5K5u5E5j040:0w1k5t5v430%150$5T5N100W0D154e4L065L5M533d152p0k5Z5.1_5W045Y4L5-5c3B0w152B5p3$5e5g5D5@3N5k0P5B5n63435G5?5~5_0I6h5i5#5%4c3Z5+5L5U4h4_040J1$1=6l3V4`0A5R0v6A3$5_020c0v0M5{365}6m3B5:2}6e4h5e5I5*5,5,6t5/045$1*0A5o5|6#5^5X6G6f1566385!6R5P6D5S6,6^5_0S6:4q6S5=675~6g6}68015_0e0e712n5$154t366r6Z6P3A6v0D4|785~5x045z5B7e6.046J6L7x69045l6d756Q5e0C6U6$6(0D6*7L1_5e0U6X7j7l7l6-7D5;7C7a6/7r6Q7t7N7P7(3A6j7#7g6p6Y7W7Y016v0A1*7q6O7^7t7v6z7-6H5X6N3m7m5w6a6c6+6@797J7Q7D7+8c4.6^7S7U4n7W6Z7^6v2U0v0,0i747~6^7*0@7O8j4v8p8r157{0Z5C8d76158n8E8p6s8z6C6E7#5_863x884a158i8V157083437;4l7j7k8Z4h0y0x15030R0f0P0`5A1=0R0k001B0v0R2g0_330n8J0k0v1?0Q0R1m0R0c0V0u1?0,2;0R0A2T6*0i5J8R798s0?8J7#2;150#3D1A0g2T3(8g01659H0Z2k04018`0R0u3D9q8|5B8 910Z93950R0+2h0_8~7F0,019H777j1D4;4,4T9=0e4W1D0v4Y9`2*2$24262(6b1=2#4W1J4?6Q2U0W0m0p0P0Y0A0m0o0l151v1x1z1B0R8O2!1M3n1K0E0c0R0Z000P0(2O9#1?0caz0c0(3(2O0o2DaD0R2U0y0o9oaQ1?580o0%0v0%5$an2y0Dan0Lasa70f1?0y3D0y0,aw2RaF570D599#0,0R8ia}0n0i2O1?aY1k0A0p0%0D0_an0can0_4#1b2r0=0D2U0Z0L0R0E5z9e1n332K2M1?4:4$3A1{1)1+1-a86B6%8B7,8y798W7#9J7HbE5Q6|bI6i8(9y739-150)8%047c7:6o7i4.0e9;04a)1Qat040t0i0O9#9%0`9obi0k9(2h0(aAao2Rbs0(0i1q1c2P2dbg9g1?0Kb?0|0Rbi0c8~0:0_bh7O0icl9Y9g0D5$0v0n0Abm0Ka-a/a;5u9;by1+1}1,2v798A6)8D2!8:2nbK8*6V6=9H7tbP6FcRcPbTcY5O7!bN64bXbZb#c#6n7h4/b*4$3F0H6*9Z1db7b99n0X0y0n0:0ib_1 b30?ciaEcsb2bm0g1nb60p0;b?2Ncb0_0:0,0X0Ra^590_bw2R3$bzcGbC7 8TbQb)b+9n93dsa-43dvbBcI7sbV4Sc;4=ax1m93c42h0+0Zce9T0ZaZaMdFcE1|dJbD896`8Uc-7$048)bR7)dM38dO4,94c^9#0n958Jd2cf9R1=8vcrctcwa*1O040hb^a`a.0_9fa.0ca:8~a@0k58aUa|a~2r0R1k8B0Z2h93cf0|0i0(9Ta?002}9b0ie38~9dd$ducFd)dybFcLbZ8XcNeQcWbZd;877^bM8Ld?04c%d=7.156kd.cV6{cXe%5qc*d.7b7dd.7;b(3x9:c=b-1Teaecb|cb0`0}940i98bhdXfa0%1;0VaM9m8J94bu94f9a.b=9n1n0F0.2b1mdXcl9acn0_90dRfodkd50@eld99bf2b/av0R1db19jb@f6590ib{be0}b?a#cfaPaR0iaT8 1?ayde2V8u1?9!9$f69)a35ma|cm9oa}9waxe59lf;3(c8dt7{0,0D0I5z0L060t1nb78v0kaC3D3(0_0N9gaGaIb12baM1=0_dpc1aU0n6EdDaN5;aNcf0b1maU1?f%aSaRbmge2d0k0u7O9afT9(910X1w0H8~5z0IckdZ0,ba1AgogwaN0+gz1k9ncq2}0{g)fP0cgl0Ra#591j0DgC2}g=930Ac~1jgE8{gG9m2RgKf)aR0R0sgna@1ceCaNeMdHeO1~dK7)6004c50keCc:b+0)fM1U1Wd%bAhrd*432A2r2t152G0B0yb10H93fufw8x4.4+a8374.b+8G6`7}8k79503FcU5504gwbW5fcU8a1=7Ge?c)045se/5y8}8Kh*8Mh}bUd,dAe 8l15h~e+d+e*i37IbXaq166!6^6v6x2qi6eXe_157A0Mi6ifi98e8N9s7X8SeR8CeTbLcTc(8!i7e=e!6~c!idiKixaria04bYisb!e{iQ4he}iB8qim56h)8YeQ81i2i,iO7z6Kivh 7Ef_h`ige@047KiJ72iEbHi|h|7Ti%8FiDiSh-i;eUjbcJ8#bGcMjebS04e.i!7f6o8-8o7@i)047{7pi6i.bZ020(7Bi^9*h=i h{iK8$j05F15j67?8QcO5Oirjn7yjdjQ8hjheYb$4Ij79t5~7`0^i/iTiz04ij8/j89u158tghi6jJ8.il798=8@8_8{i.9W92fFfafc9a9cbq9g9i9k9m9o2U8vi%h%c5b9j+jj7)2E9B1j0A9E2J9rjK7RiIjH4h9L159O8{e39Tk290k4f=b^f^8b9,kw5de^9/d_2#hY4V4)179^0;d60Z04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)