From df4e8876fb43d26a6e24caae73f1dbf8bf52cf26 Mon Sep 17 00:00:00 2001 From: abraham Date: Wed, 21 Oct 2026 11:10:03 +0200 Subject: [PATCH 1/2] fonction 2 : O(n + C) --- COMPTE_RENDU.md | 10 ++++++++-- banque | Bin 21160 -> 21208 bytes banque.c | 15 +++++++-------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/COMPTE_RENDU.md b/COMPTE_RENDU.md index 8a04d39..4b09cd0 100644 --- a/COMPTE_RENDU.md +++ b/COMPTE_RENDU.md @@ -6,7 +6,9 @@ # 1.Mesurer -```gcc -O2 banque.c -o banque && time ./banque``` +``` +gcc -O2 banque.c -o banque && time ./banque +``` ``` Empreinte : ff68d260a7a58441 @@ -16,7 +18,7 @@ user 0m4,772s sys 0m0,005s ``` -Le temps d'éxecution du programme est de 4.793 seconde et l'emprunte est +Le temps d'éxecution du programme est de 4.793 seconde et l'emprunte est : [ff68d260a7a58441] # 2.Profiler @@ -80,6 +82,10 @@ La complexité de la fonction est de [O(n)] pour +# 4. Optimisation + + +Optimisation de la fonction 2 nom du commit : "fonction 2 : O(n + C)" diff --git a/banque b/banque index 0ae2b468574f5d6d707dd61f119e9b6a5fcfc01f..c8d192af85610b22703d14e85aac363f57a2fb20 100755 GIT binary patch delta 4785 zcmZ3nl<~$=#t9Na6QmiyzyVA$Fi3b$)LOtd1skBEaC&kelR6f)olNn9J4_%Z!0E|9ndXaJ zR98RPzq9W4j4Lzc#dE|Bc1?7OoVlMcLzaHVYJO zA7pcu$s7J)ih+%Rfq`$bEW0=(|7274{fu0bzp^XydO-EFGcYjlZWiR&%sxrr zfWUv%CVK{k3{D0HhL-{V|NoyX$YH?l815M6YWQvP5doFhgWL=Z`$69H>^%CSF#TmEn{@XNa}FnAni1o_#g^T6c$a$=K& zSlm3iD|kE@Eg=SeD1Fm>h|#0@AV=e`3+xOGrF%VkSJeN)% z6$zj25)}^5-dYXAOO880f#BJ@b;2Jm2A^*K7apBIK#|bR;lp^+qxmPJNAo3U2p=nb z=?OOcxP)ip4^S|dp7ZDoQQ=7Ae}BNI^BupYi;4k=Z~zejY4sD*()3_H@aX*R(R@te z#S{?+hRy@cE-eO(9+vM)U+e`XNm!h@8vgg`3{g>V>5Nekc(IZj6e6!YI`4MJs0jG< zvObYzVAwx_k%7Ub^P01^&4d@}{0t19jK@8jUon-JHR>5Ng)Fg)PV`P!pbRL)O^ zfni?*11J^Ls3iDwUiIm$Q4x62{OAAw25SbNZjeRYF)AATEi&vNMb(Ti%>VrVkC5oC zVC3KCqms~alD~z4eX^K{MyyZgN3f9~7it`1VP^2?6F6Cf4?zo zSjGmmVbgD1HgvH~?i10?mhkPo=+b!;YPK!dY_OGZ3p7BME4(Ox*y7S1qoM$Evj%^Q z8q^k$0u69TzL3Ic9|Oof%{Y&49~BO$1)|5L7#JWn*Qg{I9zZhZ-Y*P4En+d*9yh-s=a%v4sKrm|1&6;ZDT`>&V9+_&?+ zYv*0Ct2=X4G(0-*8s0`qcrM*8a|{d*bl&vn72PX|oFZOq{Q3WXLoEXXe~Tvz$Sbal zpp@Tv$fNlHV?)J%hSJZS*E~8eXujj$7NU~Sa;e0&^CLLB`1HD{u*Q2ZzD%3ERzt4d zk$;;AL(8SoH@z%&9*i$Mnh!IAO0(wQJp8Sx|NsAY?R;%`+qLs<8cK%fWvz^0VCcLF z4tt+&mKz?uqN0-Ur1awV518vZnIW!2)em>4GNwcAksON6og#J~y)L2*Fqby|1{HAp zt)N2Owez)a=U<=h8WjbP&exz6py1J+qoM)N$i1wY77PrXFJbO}0g6-!guAst?zU#& zZ&}3za<(%lP{HvrnM*t{%A@%xIB**Og32TQ*2Mq+{~Nyb=)BSS+N1L*zdR_vGWd4; zs0g@rv#3DhZJRhsyw!e(h0JS4kQJbKb6}XfRa~L|1uUxUTsn_I8&ufww|f2m|KFq6 zR8|~hsjY-K0|Tf;(eUVe{eu7d|Nk!CG4;@_=+Sz>qw{Eqx<}_RkIws`K!hgv9pC={ z_vn28BH+Zj3{|d7A{fl}Kzq>`{1p@;^iib9fss;lC1Apr- zP?_3zw-$f<|NrHYZ~y;80^XzZg{$F# zm&X78|A$nUoi_~szbyI-mahlZ#+@$=zrCFF2jl_}>%{N>{|*1Y{QTqpe~?D0pI~k# zi2C+&GKl*B@-v9~_EPp2SS}YteS0|_ME!sH21I>(DfavSe~*35%yWx3@TZEr6#W1H z|BIVnz_vn?!DoKCUz4v$i3bLL{r~^JD7Og%!xyA#tJij+2`IW*XMrfoA0?t5-K_77 z85lfT50r5Je*jIfhoQ7buWcbnVXtYH$z&U8X{No#lOv^NwOm0h%u?e}k7nCh#-QNq zd|JZm(QV6S!ocufw8NNz;YITQ|NoD%%1mA$ohQ}@vS62gWBT{HYE}^s#tR;utX0O7 zRbuvtNPoUJ_nWLiM(ao#9xkx6Ik?E@8
FOzDQ3&E+&1okDjx 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 FIsiKUFr)wg diff --git a/banque.c b/banque.c index 02b0e39..b00e1b0 100644 --- a/banque.c +++ b/banque.c @@ -88,18 +88,17 @@ void trier_par_montant(Transaction *t, int n) /* F2 : nombre de clients ayant au moins une transaction */ int nb_clients_distincts(const Transaction *t, int n) { + int clients_vus[NB_CLIENTS] = {0}; int nb = 0; + for (int i = 0; i < n; i++) { - int deja_vu = 0; - for (int j = 0; j < i; j++) { - if (t[j].client == t[i].client) { - deja_vu = 1; - break; - } - } - if (!deja_vu) + int client = t[i].client; + if (!clients_vus[client]) { + clients_vus[client] = 1; nb++; + } } + return nb; } From 1e3ac9d8d26116de44a6ee4bc7f871ad9422b848 Mon Sep 17 00:00:00 2001 From: abraham Date: Wed, 21 Oct 2026 11:19:08 +0200 Subject: [PATCH 2/2] fonction 4 : O(n + J) --- COMPTE_RENDU.md | 18 +++++++++++++++++- banque | Bin 21208 -> 21208 bytes banque.c | 6 +++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/COMPTE_RENDU.md b/COMPTE_RENDU.md index 4b09cd0..8239b53 100644 --- a/COMPTE_RENDU.md +++ b/COMPTE_RENDU.md @@ -84,9 +84,25 @@ La complexité de la fonction est de [O(n)] pour # 4. Optimisation +- Optimisation de la fonction 1 nom du commit : "" -Optimisation de la fonction 2 nom du commit : "fonction 2 : O(n + C)" +- Optimisation de la fonction 2 nom du commit : "fonction 2 : O(n + C)". Emprunte : ff68d260a7a58441 +- Optimisation de la fonction 3 nom du commit : "". Emprunte : ff68d260a7a58441 + +- Optimisation de la fonction 4 nom du commit : "fonction 4 : O(n + J)". Emprunte : ff68d260a7a58441 + +- Optimisation de la fonction 5 nom du commit : "". Emprunte : ff68d260a7a58441 + +- Optimisation de la fonction 6 nom du commit : "". Emprunte : ff68d260a7a58441 + +- Optimisation de la fonction 7 nom du commit : "". Emprunte : ff68d260a7a58441 + +- Optimisation de la fonction 8 nom du commit : "". Emprunte : ff68d260a7a58441 + +- Optimisation de la fonction 9 nom du commit : "". Emprunte : ff68d260a7a58441 + +- Optimisation de la fonction 10 nom du commit : "". Emprunte : ff68d260a7a58441 diff --git a/banque b/banque index c8d192af85610b22703d14e85aac363f57a2fb20..68876eaeb3aae3a530fff6659c5765a5b0580ffe 100755 GIT binary patch delta 2159 zcmcbyl<~$=#t9OP1rsITb6u2V0E3H?lZ6=dICrpuc?>%ydou19j4*}p;PhlkCUwCX zP*FHNIgm*mi`q`6c)<%M5EJ0^i%?)7<6F`rhrH+FAc!_31h znIHpEf5R6-b3iBtfz21$qPQ3vC+i4S$VhN9FnBZ{knpg4QTo35J!9#reFmir3_hLj zU&u~AAefwL_-&ViJOhJAuWh~^1H+4~fB*k`_PTO-_HOO?!^Pl{Ea1`Y!Qs(s8)yeL zh>_>IhvkRTr#_t}DjXi2KU@t@8vgg`7B#SAU~o0O?b&(Eqxk@bW9NUz&L19~$I>RG zrRhyxAr!zkYw}MaYsL?gO@*BqO(s_gYlU}mGcb5|zVhh2+a04K;M2>>BFDh6e*z-| zgG=W%XKkAaFWC7R7(5w|dp5sfEPdAPqaxE8qoQGWz@ziEN3W=z31Eu z;=jrBMWq=xP2MdU$XGI&S4@tvaI%h=G?VHtuqzV9bc8i}SM@M@7N6 z^DoFL3O?O6DjNLqE#P$E(aYLt!NAb@5@yH?k6zId34|fulY=DY30xCLv3>3&$(f?I z;-Db4wGaoTlNuEbkIvUG^e3;ARI9)7?f-v|&i5}GzWx92(jB9s;nN+WqR?HUBID6( z`&kTRILIZ?KHdr5UqP0=e=&dZ zIw@09}fB9tcd#NdmKPR_Hs|OT*{r~^JsJ00M!So~Gy(aQbr*=T{81w6 z(ap*SVz(YB;r#!AUmlda7!E^ek6zn}Ajw|SuF1cpWf<>HmXMLtN(JTHQsYpMX4_rH zpw!s;w1n5A+g8nlf#JXC3S$O_7s>zs|3AiRGdV%VR*het!DEMR{Zt>_FM$yr{OeiI z88a|=?DB6+|6W(kD&oO-!K0IP*W|}C<`S1a|NrmVd93v|f8QrY1_lpMn(^r7&E9Mz z8_LKeYBaf1E{AdX=5KN#jEs{edn;5iUY~qSq02wC^Q+;vV2{q<9-Y@Axx4ud$BVM} z|NpnXtyA;pJm}FIlFQ)H>&)TNYjYuO0yvi!aDdARMw5#kmd8uqcr+j3h>ktXFYm%I z`MlyU#(>GEloXly}>Pc~8sXPi8_OC^}e zo_F$nm0ZRPlYLd~87EBcRgGjaC9~c-IKD_$>pM{ZuA>i%*|1OLS3<~f5|Bql~V7Tz^|Nj<{ z`1}9=XD~7_EO`I_{{cn@hJ+9Q|1&T#FiiOH|Gx+m1H*?8|Nm<+F)&>C`u~3l69WUo z_y7MZm>3ugzW@I}0c79z|NobO#2FYShZ`v}{dh6C%E(Ua#LNHxwZU14fx(7>fuVqb zf#J!^$>)sh#8}?^|9=iDrNO|!a0KMqHB%>H}|#e5Qud;*Sq9AMLR7#SFDyq#QTY^9gO$iNWs4q>?f0|P??BLhRp zyZ`?aK*lgIFjz1!Fic@&U^wt@@;zg-*b9sd3@M-g|JP-N$cup7%E-Xb@a6x1Wss03 zpMWnP2Ls5cKa30vGrs))UjY(lU;v8=FflN&eEt7F7%Jw&z`&rw#K6#S=l}oo$%Q8B zjI$@tG?AaY#Y92T4@fL zF1u|^j58)5bXYFAKpJWfl!|6xU|?e4VYo24(NUaHVDd~ycgBRt4;|eZPfXTyDrfqj zF?o?wnWTaeL_I846d4#8gcx`j8YUY$i%SZCxC{&o;E-luU|7lskrkMn=&a8;Ve&+0 zea3{z2c5;4j%ZH4<=n?~Kx1;2OP|yOd5EbiAru2B34%=Bpfp*?)s3-Wa-^$1W5MK3 zS9!+t$tzve88=M6=<3cH0Ch~lWJNc7rU~ksliaScGaZ(gY~`oNbwm?l*b&XiMSjN^ gOD0?T>vJON^Fn`fPDJ})qrW*Pyj`&QqyKXz06Uh-9{>OV delta 2194 zcmcbyl<~$=#t9OP6DCT&=L(c!0E0lO$wG{JoC{dNJcb36JsI~4I+#LuaC)*Nle%C7 zR1{864rEftqPCMMUT}vA!~{4!`6ttSk&Ei;2m5!{-JWq}ro4ELxWTT8PLZ3}F!L}= zHpoEK-|&Ud91x1ZVDm+`C@#i>lXV0uWGpxt7(AK}NO)MjD1G1jp0RY*K7&#Q2A|IN zFJdPj5KLD0=w&UlV_+~m>D%ke;n8`_vv+UDA1;P8et8!L29M)xAVYmRPfd=O7xS>> zDrNWScH;11Wb{~bGjcyu01o7^E3z&LO6O(AQ>W0OUNof)T0juh4kU&#$p`^uy9 zZg-4|fKM;$6Ilj^{Sz1&7+gB9IcwWYc#+P}z~ISv+_U)=W9hSQ9~GI-7!?h}10J2P zJ$gmuWEdFsH83zRc=Xn&B=~e*_35lp5qQx&`IfLWllh;?H6jv|`9Elui z498fQA@&&_04dV&=>(a0Z*sk;G~=Ynvqb|LLngl!m17K?%p)ev#QF>D3P&*=VTE26 zbKlPQuAO(mMs((=XiRPplM&b}iR_CP8z-+3o32n9!NAaY6YMCTZk8J!y`rL$a8JDW z{bO>n_yl|3&c8n0H7W`oov%SoQSj)_QPJR+Zvn+1gGVoGrUe5-=S!F&FFblhLnIJ} zXiqkhm?yAJ9L4t9$qyuEipq+E!qiqm9F%TqR5Uy~U%%j=+$X74zvJ8g{~n$1UnG3{ z|KFuMMn%J?J48jHyF^9Cqu2Jb7|3*xQ=p-e_3i(EpU!U{y|$OYQZFJw+Pi&J6uLuH zBn%I9m#AoX^xA5RGcdfc151^taCr3E9)PIU1`CC#2CED&Y+qeRrBoAsSB1A|BFffCOD5BTLl>5Jhol=kSgEd(j-HO-oQ zTUv&3@8loSa$2q?3=9mV#-Sd~wzG^u$+7ck39m=DEt?4g!++5ZV+Mv7$^ZZVKgKFE z*+ItE4PiYt79<<)(5;{9qx&T=!h?T3YahrxyZjr|zt>f>ig++y@aSZ%n!H%XTw>Da z|NlKZkG06^F7g)lM(P3BgpVw^s? zO`&V@1O-W^7tE7aD@b~Cq#<14(d*7J0f}!d0LuOj96pSUkRs(n>6_+5jE%oQS-*tW zqxm3*$8knba(jK`Fu(ldc*S3g36rCg6elOhi%xD(Qf1sVd6`l;qx|H5N`6cicqjWQ zCo^VG-lQDPC_I@3uge*FJGfeB*rHTj&8otVp;|NqZHr8F2A7>fso_qqnd>mlgUobK-=zRVEzXBuK zFo-fRFwEJ^YkHVtvH`OMC#>Q!n0(V#pUFjQGnd^qCdP)z2OXA69*~CG1*M`H7#Nrs zco;rRZgdo9G?+Zo(Vekj@h69rg zoy8>sKwJg}23Tk>WrWBEOipyxXS^_ZBA7hrEY9SjHTjlvACrUTN9?r-03RM*gkost2*O{$roMSIS)V`Q!rW4&7Mg>V{?+* zHFhRv$;noJdR#7A5W`%wCKve~V@#NA>95a;sPYT_%{dWGh>iZ{obaZ@=8yi*nE=mg BwHE*Y diff --git a/banque.c b/banque.c index b00e1b0..6a51278 100644 --- a/banque.c +++ b/banque.c @@ -118,10 +118,10 @@ void total_par_jour(const Transaction *t, int n, long *totaux) { for (int j = 0; j < NB_JOURS; j++) { totaux[j] = 0; - for (int i = 0; i < n; i++) - if (t[i].jour == j) - totaux[j] += t[i].montant; } + + for (int i = 0; i < n; i++) + totaux[t[i].jour] += t[i].montant; } /* F5 : période de jours consécutifs dont la somme des soldes est maximale */