En Travaux
moyen
Minimum et maximum
Le but de cet exercice est de déterminer les valeurs minimale et maximale d'un tableau d'entiers non vide.
Il est bien entendu possible de renvoyer le couple min ( tableau ), max ( tableau ) . On présente toutefois ici une démarche s'apparentant à « Diviser Pour Régner ». Cette méthode est intéressante du point de vue conceptuel. Dans les faits, l'approche linéaire classique reste plus facile à mettre en œuvre.
La démarche
Le cas le plus simple est celui d'un tableau ne contenant qu'une seule valeur. Dans ce cas, le minimum et le maximum sont égaux à cette valeur.
Dans les autres cas :
on détermine le minimum et le maximum de la moitié « gauche » du tableau ;
on détermine le minimum et le maximum de la moitié « droite » du tableau ;
on compare les deux minimums et l'on conserve le plus petit des deux ;
on compare les deux maximums et l'on conserve le plus grand des deux ;
on renvoie les valeurs conservées.
On propose de traiter cet exercice de deux façons (chacune proposée en version vide ou à compléter) :
une première partageant chaque tableau en deux sous-tableaux ;
une seconde jouant sur les indices.
Cette seconde version est plus efficace que la première car elle ne recopie pas les valeurs du tableau initial. La première approche a en effet le désavantage de créer de nombreuses copies du tableau initial et donc d'occuper une plus grande quantité de mémoire.
Pour la première version, on fournit une fonction partage qui prend en paramètre un tableau et partage celui-ci en deux : un tableau contenant les valeurs du début (à gauche) et un autre les valeurs de la fin (à droite). Cette fonction est déjà importée, il est inutile de la recopier.
Utilisation de la fonction de partage >>> partage ([ 1 , 2 , 3 , 4 ])
([1, 2], [3, 4])
>>> partage ([ 1 , 2 , 3 ])
([1], [2, 3])
Code de la fonction de partage
def partage ( tableau ):
taille = len ( tableau )
i_milieu = taille // 2
gauche = [ tableau [ k ] for k in range ( i_milieu )]
droite = [ tableau [ k ] for k in range ( i_milieu , taille )]
return gauche , droite
Écrire la fonction mini_maxi qui prend en paramètre une liste non vide de nombres entiers et qui renvoie le couple constitué de la valeur minimale et de la maximale.
Exemples
>>> mini_maxi ([ 9 ])
(9, 9)
>>> mini_maxi ([ 6 , 0 , - 9 , 5 ])
(-9, 6)
>>> mini_maxi ([ 3 , 3 , 3 , 3 ])
(3, 3)
Version avec partage vide Version avec partage à compléter Version avec indices vide Version avec indices à compléter
.128013s3o_8;bcdufvg/0ly n7apSr1me,(P2=4:twki9][5hx)6050j0B0J0v0M0q0b0s0i0q0v0b0b0G010J0M0w010406050b0k0A0A0v0y0r040x0d0q0k0/0d0t050o0_0{0}0 0@0w04181f051i0o1i1k1f0@0j0M0m0%0)0+0-0R0M0n0R0q1y0R0J0=050Y0h0q0B1t0*0,011x1z1B1z0J1H1J1F0J0h0d0j0 1G0y1g0J0R0%120b0w0v0t0-0F011L1v010l0!0B0t0v0A0B1F1-1/1@1N1`1J1}1 0=0a0s0E0y0d0w0d0b0M150t0s0W1+0y0y0B0i2k18220t1g0o1)2x0J1%1$1(0j240-1B0t1|2h1F1q1s0(1M2H0M2J0t1Z1r1F0w2q1g2v2x2#0^1.2l2P1^2U0y0|0q0=0s0z2u2)0?2(232+1N2-2/2;0F2@1/2_2v2G012~0v2:040s0c322w0@352|0-383a0s0H3e342)363k2;0Q3o3g3q3i370d2.392;0U3v2`2*1u2}3A2 3b0u3F3h3I3j3K3C3b0f3O3x3Q3z3B3l0N3W2{3Y3s040z0p3%3H2Q3Z3L0z2?192^3w3(3:3*0z313^333`3/2,3S3a0z3d403f3G3r450=0z3n493p3{443!4e3u4h424c4l3+3E4o4b3y3}3N4u3P3|4d3+3V4h1h2Z182N2A0j2E360i1Z201g4J1j4H2%4F4O0W2!3X3:0L0=0W0l3o4v3Y0K2;4*4A2,0l0=0A2S0M0e0|0S0M4/4!1^0;040D4~4j2}0=1U0B0v0k54431N510T0I3v0s5j0s4+4#0=0M4)4h5l4:2}0h0=275c3651534F5t3j570v1I595b5C4 5e0=0T3o5s5L0-0d0=0G0G5P5m1^4@4e5y3y515h4o5k5+5Q550-4$042q0J0k0y175r5Y5604585a5$3Y510P603:5!043-5K5.01510O0C5X5D375F5H5 695d0-62645Z0M0=682%6g6c3v065+5{5E040n5a0i0R0B6p5M046e5`6g0t4%2e2j6H6M5R015T045W6T6a6O041.0y0Y0n6S6u6U5A6I6B5~5J6,6a5f5i5k6A6h044@0t4_0n6/6b0=6L2#5-6m6|4{706f6U6W6Y766{6#6~4_7a726.6l3r0=6D0k6F6+2^6{6^5*6`6N4?4^0e0j7m747c6!4?0v4|7D7H787e7N7p6}7C7l7o5%0=5B6?786#0j6Q0J7u337w5N6x6z6g5:5p7Q4w7B6 0e716Z7O0=020q0J0g7=3)7@4_7E7V610=5)2#6y5,5j7h84823:7P7{7R7j7_6_8e7/0=0B0#7)2w7+048a3_8d8p6U7i4^8h1^8j7g7A7S7^868b7.6U7:5q8I8C7J7L7`8S6a6W020n808F5|7a7M873:5(8o5,8f6}7K4}8k3y8H2^778l8=8n7y8B6a5:8s0b8u4Z6@898.8O7I8;4|8%5S5U9e798}8M3_8c90785:5=5@5_8X7!8g8+507G8@839c8?8b184X0B2x2Y9G4I1r4K2A2C2y1Y1!2A5G1J2x4J0@0o0W0Y0!0b04.
.128013s3o_8;bcdufvg/0ly n7apSr1me,(P2=4:twki9][5hx)6050j0B0J0v0M0q0b0s0i0q0v0b0b0G010J0M0w010406050b0k0A0A0v0y0r040x0d0q0k0/0d0t050o0_0{0}0 0@0w04181f051i0o1i1k1f0@0j0M0m0%0)0+0-0R0M0n0R0q1y0R0J0=050Y0h0q0B1t0*0,011x1z1B1z0J1H1J1F0J0h0d0j0 1G0y1g0J0R0%120b0w0v0t0-0F011L1v010l0!0B0t0v0A0B1F1-1/1@1N1`1J1}1 0=0a0s0E0y0d0w0d0b0M150t0s0W1+0y0y0B0i2k18220t1g0o1)2x0J1%1$1(0j240-1B0t1|2h1F1q1s0(1M2H0M2J0t1Z1r1F0w2q1g2v2x2#0^1.2l2P1^2U0y0|0q0=0s0z2u2)0?2(232+1N2-2/2;0F2@1/2_2v2G012~0v2:040s0c322w0@352|0-383a0s0H3e342)363k2;0Q3o3g3q3i370d2.392;0U3v2`2*1u2}3A2 3b0u3F3h3I3j3K3C3b0f3O3x3Q3z3B3l0N3W2{3Y3s040z0p3%3H2Q3Z3L0z2?192^3w3(3:3*0z313^333`3/2,3S3a0z3d403f3G3r450=0z3n493p3{443!4e3u4h424c4l3+3E4o4b3y3}3N4u3P3|4d3+3V4h1h2Z182N2A0j2E360i1Z201g4J1j4H2%4F4O0W2!3X3:0L0=0W0l3o4v3Y0K2;4*4A2,0l0=0A2S0M0e0|0S0M4/4!1^0;040D4~4j2}0=1U0B0v0k54431N510T0I3v0s5j0s4+4#0=0M4)4h5l4:2}0h0=275c3651534F5t3j570v1I595b5C4 5e0=0T3o5s5L0-0d0=0G0G5P5m1^4@4e5y3y515h4o5k5+5Q550-4$042q0J0k0y175r5Y5604585a5$3Y510P603:5!043-5K5.01510O0C5X5D375F5H5 695d0-62645Z0M0=682%6g6c3v065+5{5E040n5a0i0R0B6p5M046e5`6g0t4%2e2j6H6M5R015T045W6T6a6O041.0y0Y0n6S6u6U5A6I6B5~5J6,6a5f5i5k6A6h044@0t4_0n6/6b0=6L2#5-6m6|4{706f6U6W6Y766{6#6~4_7a726.6l3r0=6D0k6F6+2^6{6^5*6`6N4?4^0e0j7m747c6!4?0v4|7D7H787e7N7p6}7C7l7o5%0=5B6?786#0j6Q0J7u337w5N6x6z6g5:5p7Q4w7B6 0e716Z7O0=020q0J0g7=3)7@4_7E7V610=5)2#6y5,5j7h84823:7P7{7R7j7_6_8e7/0=0B0#7)2w7+048a3_8d8p6U7i4^8h1^8j7g7A7S7^868b7.6U7:5q8I8C7J7L7`8S6a6W020n808F5|7a7M873:5(8o5,8f6}7K4}8k3y8H2^778l8=8n7y8B6a5:8s0b8u4Z6@898.8O7I8;4|8%5S5U9e798}8M3_8c90785:5=5@5_8X7!8g8+507G8@839c8?8b184X0B2x2Y9G4I1r4K2A2C2y1Y1!2A5G1J2x4J0@0o0W0Y0!0b04.
.128013s3o_8;bcdufvg/0ly n7apSr1-me,(P2=4:+Ntwki9][5hx)6050j0C0M0v0P0q0b0s0i0q0v0b0b0H010M0P0w010406050b0k0B0B0v0y0r040x0d0q0k0=0d0t050o0|0~10120`0w041b1i051l0o1l1n1i0`0j0P0m0*0,0.0:0U0P0n0U0q1B0U0M0^050#0h0q0C1w0-0/011A1C1E1C0M1K1M1I0M0h0d0j121J0y1j0M0U0*150b0w0v0t0:0G011O1y010l0%0C0t0v0B0C1I1:1=1`1Q1}1M20220^0a0s0F0y0d0w0d0b0P180t0s0Z1.0y0y0C0i2n1b250t1j0o1,2A0M1*1)1+0j270:1E0t1 2k1I1t1v0+1P2K0P2M0t1$1u1I0w2t1j2y2A2(0{1;2o2S1{2X0y0 0q0^0s0z2x2,0_2+262.1Q2:2=2@0G2`1=2|2y2J01310v2?040s0c352z0`382 0:3b3d0s0I3h372,393n2@0T3r3j3t3l3a0d2;3c2@0X3y2}2-1x303D323e0u3I3k3L3m3N3F3e0f3R3A3T3C3E3o0Q3Z2~3#3v040z0p3*3K2T3$3O0z2_1c2{3z3+3?3-0z343{363}3=2/3V3d0z3g433i3J3u480^0z3q4c3s3~473%4h3x4k454f4o3.3H4r4e3B403Q4x3S3 4g3.3Y4C3!4E4u0z3)4I4m3M4u0G3:4O464Q3O0G3`2(4s4z4F0G424!4y3,4%4b2*1o2$1b2Q2D0j2H390i1$231j4?1m4;4/2*4{0Z2%4J1{0O0^0Z0l3r4+3?0N2@5d4D2/0l0^0B2V0P0e0 0V0P5i571Q0@040E5u4P3m0^1X0C0v0k5A4V0:5x0D3r0s5e2/0^5p0Z0h175I390d0^0H5W3B0O0i0^0L190C5#3#5L5N5P305R0e1}1a4k5;0:5Y045!5`5j1Q5%5)5+5-3?5x0W0J3y0s6c5O610:59040P5c4k6e5v5C6i0e5T5V6l5{010d5g6i0b5:6f0163045*2M661{5x6a4r6d6M6m5B3a5?6r0M6A6n6v5Z6U6P5n0^4T4!6N6d6u0t5?5^6Y5J6W5~6.3u0h0^2a6H5w0^5z606V6+045E5G6`5K0^0W3y066M6u6h6j6=4z6R0C5U6T6t6B5}0H5 2(6O6/705p6-7k6V5}0A7e3#6!3.74016J6b6(7q396h2t0M0k0y5_7p6*5D0v1L5F5H6~6P5x0S7D7s6q7h6s2*6B5x0R5M7v6P70727W7*6V7Z7#7g7i7D7,787a6B7$5n1E0C7?2{7I3B7m7z676|7`6p6S8b1{5}0K8h5=6p7u7@7Y768l5|0^0o0o8s017B4)3|796)815m5o0e0n7}0^7.7Q8E045r5p8I7/6/8a8S3u8F0t5p8P8J5y8e7=8#8L877R8f7(7j8p6/5/8V7f6p830P858#776L8D6 8X5S8)8x708P6q8x8U8M908O8G8!7X8;8d9f8W717T1M739i3B8=9a7:5?8_8{9o5.8K946,2V8|7 8 6P7c6k9r7r918H980^020q0M0g9z9c8Y979w8c046K6%7H8,5n8Y9M6;8?3,9K8R9!6c7b0^0C0(5,9W6I0^9Z3|7H889,9T5t9+3?998+8N9%928~9:6B9G9S969.a67w9N0n9Qae0v5s9V8:397Faa6N9$ana29I5X6Xa35Q8Oaw9Lat9;049?0b9^aq9p9{7G6(av5s9)7oah9saDao0j9Dab6V7K0!7N7PaV9Ja193aB8m9e4*0o540C2A2#a^4=1u4@2D2F2B1#1%2D9la{0o4?0`b70!0$0(04.
.128013s3o_bcdufvg/0ly napSr1-me,(P2=tki9][5hx)6050h0z0F0s0H0o0b0q0g0o0s0b0b0E010F0H0t010406050b0i0y0y0s0v0p040u0d0o0i0*0d0r050m0;0?0^0`0/0t04131a051d0m1d1f1a0/0h0H0k0Y0!0$0(0M0H0l0M0o1t0M0F0-050T0f0o0z1o0#0%011s1u1w1u0F1C1E1A0F0f0d0h0`1B0v1b0F0M0Y0}0b0t0s0r0(0D011G1q010j0V0z0r0s0y0z1A1(1*1/1I1=1E1^1`0-0a0q0C0v0d0t0d0b0H100r0q0R1$0v0v0z0g2f131}0r1b0m1!2s0F1Y1X1Z0h1 0(1w0r1@2c1A1l1n0Z1H2C0H2E0r1U1m1A0t2l1b2q2s2W0:1)2g2K1:2P0v0@0o0-0w2p2!0.2Z1~2$1I2(2*0-0D2.1*2:2q2B012^0s2+040c2|2r1c2U132I2v0h2z300g1U1{1b3c1e3a2Y142/053h0R2V2!300G0-1H0z0v0F37040q2;2#1p2@0-0y2N0H0e0@0N0H3D3G300,040B0K3S2 2?0(3L0-0I3Z3v3#013V0J0O3D3F3!3I0(0d0-0E0E3;3T3,3V0B3*2=3@013%043)3p2}3~443V0A3}3?2L450H3(423H4h3V3:492r0/4g1:3x043z3B4f3+440r3K3M3O0s3Q4l3U0-3X4I3,460P4M4c0-4e4q3E4b4h460n4Q4n4S4z434h3_040x4!1:46482Y4t1I4d4%4m4.4j040L4-4?0-3/4^304*3{523 4K4~3^0-4,4U4W4`4k5d4=0(4@4U3=4A4X4{4P5h5n1:4o3D4s5s1I4v4x3C5l5e3J043L0r3N3P3R5r4(5t4K3Y5L4_1I46365Q4J044T2W5m5M5S4{5U4;5x5j4$5C5i4i0-5(3q5.5k5Z5D3$5%593-504p5^5.543|5-5*5}3W5|5T5|5@2/5!5R5`5:6a0-5 2/0/0m3s0z2s2T6o3b1m3d2v2x2t1T1V2v0s1D6r0m3c6l0R0T0V0b04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)