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
.128013:Lp(40ed3; 1jo5_n)h]6,qc[yFuvà8i2+xms7=wlSIatf-9ORrg.éPkbè/050i0h0T0S0G0P0L0l0y0P0S0L0L0N010T0G0d010406050L0C0K0K0S0Z0A040Q0o0P0C0 0o0r0l020S0K0d0k0l0Y0h190Z0x0C0h0L050+16181a1c140d041A1H051K0+1K1M1H140i0G0D0@0_0{0}0t0G0!0t0P1!0t0T12050/0)0P0h1V0`0|011Z1#1%1#0T1-1/1+0T0)0o0i1c1,0Z1I0T0t0@1f0L0d0S0r0}0H011;1X010U0;0h0r1n0h1+2c2e2j1?2m1/2p0K2r040a0l0%0Z0o0d0o0L0G1i1k0-2a0Z0Z0h0y2M1A2t0r1I0+282Y0T2625270i2v0}1%0r2o2J1+1S1U0^1=2,0G2.0r221T1+0d2R1I2W2Y33152d1k2@2k2|0Z190P120m2V3713362u391?3b3d120H3h2e3j2W2+013o0S3e040j3s2X143v3m0}3y3A0f3D3u373w3J120p3M3F3O3H3x0o3c3z120v3T3k381W3n3Y3p040M3%3G3*3I3,3!040F3:3V3=3X3Z3A0W3M1J311A2=2#0i2)3w0y222B0,1T1I300h323i424b0-4j3l3}0(120-0U423;2^010O120l4v3|4x0r0U122`0D0h0Z2K1j1z1B4k4w2k11040e4C4p4E121}0h0S0C4W3)4x4T0s0b3T0l4/4B4R3n4Z0o0/0P3M4;4D2k0o120N4{3(3w0K0G120g4.4:533W0r4Z0:0P1/524=0}4 04514P3t4|4X3a0)122y4(3w4T4V5o2X5b3}5d044!4$5w3W4+594/5C4x4r040U3Y5i4}4?040G5T5r1?0o4z5W0r5Y4)5s120Z2e0!0h5I3}5y5;4Y5F5f5h5A045q5*5!120V5)5456043g5|5N4S124,5L4:5M5j015P5R0Z635c120n6l3}5#4H5(5|5~3P5t045-0r5/5@6a4U6C5V5X6u6960040I6p4x553f6F0}4T0w6N3a5e0;5{356g4+4-5|066e6*5a6g5P0G4u6I6g5E5G4%686#120z6R3x4H6}4T0u6V6K020!0T0k733I5e1.4#6^6!5U6S6{6}5E6o6_7g01716%336)6+7t6f7n6?4^3z79015l0I5n336v3W6P663T7s7v5Z0}5P2R0T0C0Z6t7F6J7a5F7y4`6(1A4m4i437(0+461A0T487-2%2Z21232#0S7c2Y461G4o5 0}2R0K0q0U0S0(0h0q0t0j121s1u1w1y0l7q4k1N3j1H0X1k1h0;0G0L1:0C2.0l0i0o0C7c0l210C0^1:0b0l1j2a1o1a1:0y0t0S8e0l0$0P0$2A0r0T8v002`1S0y1:057%5W7$4c5}0S4J0y0l0T8x0?1/0?8R8T2o0T0?161T2e8|8X8Z0G8#4B8(7l8(0#0l0Q0G968+1-0z0n720+8(0l1y8W0L2$940T1t8{0l2`0U0$0Z0G0h7S0l0E9e4n9g0G9j9l8H9n0l84959E8t1:4I4K4M1k8F8H2`0y0Z8`8V1:3z3Y8?8L0o1o9s7S0#1J8k040B0S0y2n9D2a0r8#0D0o0G0Z0@0.9s0l0K0$284c0l0S0l8t8v0$0L8-900S5/8g9m5g1:0h0U0U2S7R1:0)7d4b0C0d8v9,8J5-8q4N9a0%1a9m0J1t0d1/0w0l2I9Caf6@aC8v0G0J8Q8S8U8|aQ1/aR819Aa38r5-8I2d9#ac0CaZ0W0l8~0D900La(1:0-a@0G0*2Aa?0l0Fa`0C8 8Va~0la)2$a12Kb49(0C0l0Mb9bb91051t040.0y1Abs0#060R0P0l0Aa?a/4$8:7Z0l0p0pa:1a0:0LaH9=7}0c9,1haW8#1|1:a8aa2O9M1w0S0i5-0 8P951w9d9M0d0$2p1%ai8Va`9d0P008HbP0C8N2L1:b}8ob^4KaR8xa32O0!6z0i0?6@0J9;8j147+0.5f0L04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)