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
.128013fe)à61ipmzSvk(q5rxOd;VPo/aR l+é[C8Ly7I_3:-tg.=swc,è]hD2nEb094u050u0c0R0A0h0D0V0C0X0D0A0V0V0U010R0h0i010406050V0.0j0j0A0r0K040l0y0D0.120y0(0C020A0j0i0v0C0B0c1c0r0p0.0c0V050z191b1d1f170i04051K1D1N0z1K170u0h0m0`0|0~100#0h0S0#0D1#0#0R15050=0*0D0c1W0}0 011!1$1(1$0R1.1:1,0R0r1L0R0#0`1i0V0i0A0(100%011=1Y010b0@0c0(1q0c1,282a2f1@2i1:2l0j2n040a0C0x0r0y0i0y0V0h1l1n0:260r0r0c0X2I1D2p0(1L0z242U2123221-0u2r101(0(2k2F1,1T1V0{1?2(0h2*0(0y2.1,0i2N1L2S2U2 18291n2:2g2^0r1c0D150C0g2R3316322q351@37393b0%3e2a3g2S2%013l0A3a040C0O3p2T173s3j103v3x0C0-3B3r333t3H3b0q3L3D3N3F3u0y383w3b0f3S3h341X3k3X3m3y0L3$3E3)3G3+3Z3y0I3/3U3;3W3Y3I0,3`3i3|3P040g0+413(2;3}3,0g3d1E3f3T424a440g3o4f3q4h49363?3x0g3A4n3C3%3O4s150g3K4w3M4i4r3~4B3R4E1O2}1D2.2X0u232$3V0X2_2x0/1U1L2|0c2~3f3L054V0:4%4G1@0n150:0b4)3:4a0W3b4@3{4j0b152?1T0X0c4|4.1014040o554q3k151~0c0A0.5b3t580Y3L0C4y3V0(150X0h1/544L4^2g580d0P3S0C5E5o5y5d040:0*1k5n5p3|0y150U5N5H100j0h15474E065F5G4}36152i0(5T5(1@5Q045S4E5%563u0*152u5j3V585a5x5.3G5e0A5v5h5}3|5A5-5^5:0Q6b5c5V5X453S5#5F5O4a4:040W1!1:6f3O4;0c5L0R6u3V5:020D0R0v5=2 5@6g3u5*2?684a585C5!5$5$6n5)045W1(0c5i5?6V5/5R6A691560315U6L5J6x5M6$6/5:0E6*4j6M5,615^6a6@62015:0z0z6{2g5W154m2 6l6T6J3t6p0h4?725^5r045t5v786(046D6F7r63045f676 6K580G6O6W6Y0h6!7F1@580!6R7d7f7f6%7x5+7w746)7l6K7n7H7J7Y3t6d7V7a6j6S7Q7S016p0c1(7k6I7/7n7p6t7%6B5R6H3f7g5q64666#6.737D7K7x7#864(6/7M7O4g7Q6T7/6p2N0R0.0r6~7^6/7!0@7I8d4o8j8l157=0V5w8770158h8y8j6m8t6w6y7V5:803q8243158c8P156`7}3|7+4e7d7e8T4a0X0g15030C0J0A0`5u1:0C0(02030O0,0v1B0R0C290_2|0F8D0(0R1;0P0C1m0C0D0Z0m1;0.2*0C0c2M6!0r5D8L738m0?8D7V2*150w3w1A0)2M3X8a015 9F0V2d7t1z0y6F8;0C0m3w9o8?5v8_8{8}8 0V91930C0u2a0_8^7z0.029M7v7B5k150d3$0z4+4$4M9{0z4P1D0R4Ra02!2V651:2U4P1J4-6K2N0j0N0b0A0n0c0N0#0O151v1x1z1B0C8I2T1O3g1K0M0D0C0V000A0S2H9%1;0DaC0D0S3X2H0#2waG0C2N0X0#9maT1;520#9N0y5Waq2r0haq0Tavaa0J1;0X3w0X0.az2KaI510h539%0.0C8ca 0F0r2H1;0R0y1k0c0b0y0h0_aq0Daq0_4V1b2k0=0h2N0V0T0C0M5t9c1n2|2D2F1;4*4W3t1_1%1)1+ab6v6X8v7$8s738Q7V9H9;836;8O8!4a6_9w6}9F71bL6c15767*6i7c4(9_4W04a+1Qaw040t0r0Y9%9)0`9mbl0(9*2a0SaDar2Kbv0S0r1q1c2I26bj9e1;0Hb_0|0Cbl0D8^0:0_bk7I0rco9!9e0h5W0R0F0cbp0Ha/a;a?5o9`bB1)1{1*2o738u6Z8x2T8*2gbNbU5z6,9F7n5K6?b#6KbWcU5I7UbQ6+049@c(107577c/017+b+3q1D9`3y0i6!9#1dbabc9l0s0X0F0:0rb|1}b50?claHcvb4bp0)1nb90b0;b_2Gce0_0:0.0s0Ca`530_bz2K3VbCcJbF7_8Nc!b,c|9l91dza/3|dCbEcL7mbY4Lb-4,aA1m91c72a0u0Vch9T0Va#aPdMcH1`dQbGbRcZ6zc?c%c#bHc*31dV4$92c 9%0F938Dd9ci9R1:8pcucwcza,1M040$b{a|a:0_9da:0Da=8^a_0(52aXa~b02k0C1k8v0V2a91ci0|0r0S9Ta^002?990re88^9bd-dBcId:dFbIcO8X5;bXbSdH8S7/d_817/bP8F7ZdTd`7~046ec?cY6=d@e-9=c-eYb(c?c^4)d~b/ee1Kehb ce0`0}920r96bkd(fc0y1/0ZaP9k8D92bx92fba:b^9l1n0x0K241md(co98cq0_0(00dYfqdrdc0@eqdg99b:1Refay0C1db39hb`f8530rb~bh0}b_a%ciaSaU0raW8_1;aBdl2O8o1;9$9(f89+a65ga~cp9ma 9uaAea9jf^3XcbdA7=0.0h0Q5t0T060t1nba8p0(aF3w3X0_0e9eaJaLb324aP1:0_dwc4aX0F6ydKaQ5+aQci0k1maX1;f+aVaUbpgi260(0m7I98fX9*000c0s1w0i8^5t0Qcnd*0.bd1AgsgAaQ0ugD1k9lct2?0{g.fT0Dgp0Ca%531j0hgG2?g`91g#g}gI8=gK9k2KgOf-aU0C0ogra_1ceHaQeRdOeT1|dR7Z5`04c80(eHf2c|0dfP3g2.d.bDhvd;3|2t2k2m152z0l0Xb30i91fwfy8r4(4#ab304(c|8A6;7@8e734`3ycX4 04gAbZcWc+6|7yf}7Ae{5~155me@5s8@8Eh.8G04i3e:8Ue#e`i87Ci2e!d|ige|5B9q5Eh+6r2je!d?eY7u0vij6Nh{cV04at168z8MeW8weY8RcQe+h`i0idiud^8Yiyh!c`8f9?e~c=ic4af17-7R6/7ih-e%iG7{i7i,bM15iwe!9,h_047EiA5I8Wi|57157Nio8KeViki:b$eZi4iHbKe*6^15e?i!796i8%8i7.i)8B7?e!i.iv0S9:jh5Ii^i 9G15i{iOh|i~jCiBj2i%j4iGiQjvc:7XjM6:jEjdi;048ZjP8$j36Ujn048Ci/auiWiCjYjm9s158ngle!jR4o8)7/8,8.8:8=i.9W8|8~90fIfcfe989abt9e9g9i9k9m2N8pj3h+c8bcj%h;8t2x9z1j0c9C2C9pjye,il3V9Ji=9/0v9Pe89Tj}8`j 9Zd0drb{f|859.0.9NixktiX5!c{b.9|a84Z179~0;dd0V04.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)