Inversions dans un tableau (1)
On considère dans cet exercice des tableaux d'entiers.
Soit tab un tel tableau. On appelle inversion un couple d'indices distincts i et j tel que :
iest plus petit quej;tab[i]est strictement plus grand quetab[j].
Considérons par exemple dans le tableau :
🐍 Script Python
# indices 0 1 2 3
tab = [7, 5, 9, 6]
Ce tableau compte 3 inversions :
- pour les indices
0et1, cartab[0](qui vaut7) est strictement supérieur àtab[1](qui vaut5), - pour les indices
0et3, cartab[0](qui vaut7) est strictement supérieur àtab[3](qui vaut6), - pour les indices
2et3, cartab[2](qui vaut9) est strictement supérieur àtab[3](qui vaut6).
Remarque
Compter les inversions dans un tableau permet de mesurer son « désordre » : si un tableau ne comporte aucune inversion, il est trié dans l'ordre croissant !
On demande d'écrire la fonction inversions qui prend en argument un tableau d'entiers et renvoie son nombre d'inversions.
On convient qu'un tableau vide ne compte aucune inversion.
Les tableaux utilisés dans les tests seront de petite taille (100 éléments au maximum).
Exemples
>>> inversions([])
0
>>> inversions([5, 6, 7, 9])
0
>>> inversions([7, 5, 9, 6])
3
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
.128013s3_8èufvIy n7aS1me(P24:jtwi][h)6Oo;bcdg/0làqp.rFL-,=+k95Rxé050M0s0z0o0B0Q0b0l0L0Q0o0b0b0!010z0B0T010406050b0g0r0r0o0V0k040p0I0Q0g0 0I0m0l020o0r0T0J0l0)0s190V0S0g0s0b050O16181a1c140T041A1H051K0O1K1M1H140M0B0i0@0_0{0}0E0B0N0E0Q1!0E0z12050/0K0Q0s1V0`0|011Z1#1%1#0z1-1/1+0z0K0I0M1c1,0V1I0z0E0@1f0b0T0o0m0}0v011;1X010h0;0s0m1n0s1+2c2e2j1?2m1/2p0r2r040a0l0u0V0I0T0I0b0B1i1k0-2a0V0V0s0L2M1A2t0m1I0O282Y0z2625270M2v0}1%0m2o2J1+1S1U0^1=2,0B2.0m221T1+0T2R1I2W2Y33152d1k2@2k2|0V190Q120q2V3713362u391?3b3d120v3h2e3j2W2+013o0o3e040c3s2X143v3m0}3y3A0w3D3u373w3J120(3M3F3O3H3x0I3c3z120G3T3k381W3n3Y3p040n3%3G3*3I3,3!040e3:3V3=3X3Z3A0%3M1J311A2=2#0M2)3w0L222B0,1T1I300s323i424b0-4j3l3}0$120-0h423;2^010A120l4v3|4x0m0h122`0i0s0V2K1j1z1B4k4w2k11040t4C4p4E121}0s0o0g4W3)4x4T0F0x3T0l4/4B4R3n4Z0I0/0Q3M4;4D2k0I120!4{3(3w0r0B120P4.4:533W0m4Z0:0Q1/524=0}4 04514P3t4|4X3a0K122y4(3w4T4V5o2X5b3}5d044!4$5w3W4+594/5C4x4r040h3Y5i4}4?040B5T5r1?0I4z5W0m5Y4)5s120V2e0N0s5I3}5y5;4Y5F5f5h5A045q5*5!120Y5)5456043g5|5N4S124,5L4:5M5j015P5R0V635c120y6l3}5#4H5(5|5~3P5t045-0m5/5@6a4U6C5V5X6u6960040#6p4x553f6F0}4T0Z6N3a5e0;5{356g4+4-5|066e6*5a6g5P0B4u6I6g5E5G4%686#120D6R3x4H6}4T0C6V6K020N0z0J733I5e1.4#6^6!5U6S6{6}5E6o6_7g01716%336)6+7t6f7n6?4^3z79015l0#5n336v3W6P663T7s7v5Z0}5P2R0z0g0V6t7F6J7a5F7y4`6(1A4m4i437(0O461A0z487-2%2Z21232#0o7c2Y461G4o5 0}2R0r0d0h0o0$0s0d0E0c121s1u1w1y0l7q4k1N3j1H0H1k1h0;0B0b1:0g2.0l0M0I0g7c0l210g0^1:0x0l1j2a1o1a1:0L0E0o8e0l0+0Q0+2A0m0z8v002`1S0L1:057%5W7$4c5}0o4J0L0l0z8x0?1/0?8R8T2o0z0?161T2e8|8X8Z0B8#4B8(7l8(0U0l0p0B968+1-0D0y720O8(0l1y8W0b2$940z1t8{0l2`0h0+0V0B0s7S0l0R9e4n9g0B9j9l8H9n0l84959E8t1:4I4K4M1k8F8H2`0L0V8`8V1:3z3Y8?8L0I1o9s7S0U1J8k040W0o0L2n9D2a0m8#0i0I0B0V0@0.9s0l0r0+284c0l0o0l8t8v0+0b8-900o5/8g9m5g1:0s0h0h2S7R1:0K7d4b0g0T8v9,8J5-8q4N9a0u1a9m0*1t0T1/0Z0l2I9Caf6@aC8v0B0*8Q8S8U8|aQ1/aR819Aa38r5-8I2d9#ac0gaZ0%0l8~0i900ba(1:0-a@0B0f2Aa?0l0ea`0g8 8Va~0la)2$a12Kb49(0g0l0nb9bb91051t040.0L1Abs0U060j0Q0l0ka?a/4$8:7Z0l0(0(a:1a0:0baH9=7}0X9,1haW8#1|1:a8aa2O9M1w0o0M5-0 8P951w9d9M0T0+2p1%ai8Va`9d0Q008HbP0g8N2L1:b}8ob^4KaR8xa32O0N6z0M0?6@0*9;8j147+0.5f0b04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)