From 9604c6279fe1218d99d3f47eb62a7ac178bd860c Mon Sep 17 00:00:00 2001 From: Felix-Vimalaratnam Date: Wed, 10 Sep 2025 17:24:37 +0200 Subject: [PATCH] =?UTF-8?q?pas=20r=C3=A9ussi=20le=20thread?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Comte-rendu.md | 20 ++++++++++++++++++++ bubblesort.c | 2 +- gmon.out | Bin 0 -> 4185 bytes quicksort.c | 28 ++++++++++++++++++++++++++++ quicksort.h | 6 ++++++ student_rank | Bin 0 -> 23752 bytes student_rank.c | 5 +++-- 7 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 Comte-rendu.md create mode 100644 gmon.out create mode 100644 quicksort.c create mode 100644 quicksort.h create mode 100755 student_rank diff --git a/Comte-rendu.md b/Comte-rendu.md new file mode 100644 index 0000000..cfee5d4 --- /dev/null +++ b/Comte-rendu.md @@ -0,0 +1,20 @@ +##Patrick Felix-Vimalaratnam + +J'ai compilé avec : + gcc -g -pg -o student_rank student_rank.c heapsort.c bubblesort.c + +puis j'ai lancé : + ./student_rank 1000 1000 0 + +Dans le fichier gmon.out donner avec la commande gprof, il y a : + - un tableau pour avoir le temps d'execution et le nombre d'appel de chaque fonctions appelées dan sle code avec une légende de chaque colonne du tableau. + - un autre tableau mais avec un graphe de chaque appel avec aussi une légende de chaque colonne. + - un ordre d'appel de fonction avec le nom de la fonction. + +Il fallait supprimer l'appel à bubble_sort dans la fonction find_rank_student du fichier student_rank. + +Pour coriger le probleme de bubble sort il faut changer la condition d'arret du do while de égale à 1 à supérieur à 0. + +Utiliser heapsort est plus rapide qu'avec bubblesort. + +Tentative de quicksort mais je n'ai pas réussi à faire le threading. \ No newline at end of file diff --git a/bubblesort.c b/bubblesort.c index a848827..1e88188 100644 --- a/bubblesort.c +++ b/bubblesort.c @@ -17,5 +17,5 @@ void bubblesort(int* array, int length) swapped++; } } - } while(swapped==1); + } while(swapped>0); } diff --git a/gmon.out b/gmon.out new file mode 100644 index 0000000000000000000000000000000000000000..9aba7439f8b4ddf0e3af541fe9c50fdb80b2ae16 GIT binary patch literal 4185 zcmYe#&Cg?GzyVC;AQBVU85mL+7#NCElk@XZiXnmw3~&ZaV3ZyWfzc2c4S~@R7!85Z z5Eu;s@DGf`y9#;zA|{P6iFAqXZe4prTL#3Mq&Ugbm@Os;z|W z8;UB34a=eEH~P656pA2BKO4!niID*W8K5LP)F6oKnZP^<8^lDgKs?ehrTX#P$jAV3 zFS06_joje8&xRz$3TK1VFfp)#Rlo%C)kusRgdob~r6BYRW(EdE2N4Kop*V!Tz|O$H zSRe}F%#eoAV3iM`f(1|=4o>_Gj32}xD#D>=gB-=k05$6&vY-M~@ETM*Sfv3}@V+p_ e7_eXfHo*j_U=Om&0&IdGWFcn393R>t%K!isSsE(< literal 0 HcmV?d00001 diff --git a/quicksort.c b/quicksort.c new file mode 100644 index 0000000..230da5c --- /dev/null +++ b/quicksort.c @@ -0,0 +1,28 @@ +#include "quicksort.h" + +void quicksort(int* tab, int first, int last) { + int pivot, i, j, tmp; + if(first < last) { + pivot = first; + i = first; + j = last; + while (i < j) { + while(tab[i] <= tab[pivot] && i < last){ + i++; + } + while(tab[j] > tab[pivot]){ + j--; + } + if(i < j) { + tmp = tab[i]; + tab[i] = tab[j]; + tab[j] = tmp; + } + } + tmp = tab[pivot]; + tab[pivot] = tab[j]; + tab[j] = tmp; + quicksort(tab, first, j - 1); + quicksort(tab, j + 1, last); + } +} diff --git a/quicksort.h b/quicksort.h new file mode 100644 index 0000000..e47fc61 --- /dev/null +++ b/quicksort.h @@ -0,0 +1,6 @@ +#ifndef __QUICKSORT__ +#define __QUICKSORT__ + +void quicksort(int* tab, int first, int last); + +#endif diff --git a/student_rank b/student_rank new file mode 100755 index 0000000000000000000000000000000000000000..8089fcba7a7c594446a07c2c46baefa54b8f1999 GIT binary patch literal 23752 zcmb<-^>JfjWMqH=W(GS3Fi#L7;sBu-I)b4L1_lNP1`7s$1_uUJ1{DT21_lNeuoy%h zrXEInFhj&)GzWys01^i2djn!HFfgFgGEj9e8tf(p2C&;e`k>Mn)B#S25R7IJfbc>3 zSwT!FA0`f?4f#Nl3=A+DCJxdEwod^f&wxg+0ZTG4z-VNBps+ch3(E=b=6sJ;tOeK7g~$UzJY3@{oNo*-v{a0fIz(P>zGz-V-RC!qS!X%&bw8DKQX z4v-Lt2H_s41UiitOyD#E(ii-+Bn6}o-F+}V%zZE#=FR}9z8O%1(di{1!xRb6v3eU0;QqR2@W3v z1_lOD8g=&zWngMxH~{hkOrDW}5rxl$#s{etVPF8~E0F$4DZ?l%uMuiQgm}N^GYjpD=f@(%}n%)^Yx6t`3htg2ov-yk^*rC1_mJ{K8$IM zLp%eA_*Di5c-DfM0ir?f!Dc=vZm@|@!(qNA4)H1+;-GQ|oB7r_)F5 z)WnihhQyNmOorUVoSgh*hWPlL%%o(HHAN-yxrv#148=u>c_|F>@yQj5@oAZPi8+~7 zsSLTv`K5U!3ip&xQkbY2FHe+!2@pN*IH_|hKvy2f;BRx}wc+U{u z_>|P5)bz~alGLIQU+0|syws4yq?}ZU999_y1_mYuCI)5(Mg}GZ7BCychhSzfpOFDV zgX$?}hE)s|1WqnAK^F*Hu1mdDSZZp|Eg#785sEG9T@(rg7~0TJj2Te|NsC0uX;$I zfguCbOn-R+%-;p#gR1J62f+MIAU>$+@p1#0zY4?$H91}`0P`1t_@FBM`Bfl3sEP8@0n9G~@j+GiO9L=J z3&aOi-7gjX|Njs2zu{ZY&Wmv#osT@4pL_@iaWy<(c+#WS_A3hm!++6kJqCs^X?pzf zE#U9~sqbcW(q~`*h1B5*p&q@qJKp{O@6l`eh=+mUIIFTgsPV_Z;L-W?zi65s1A|Am zZMYr-L+s0iJPZsIK>80OjGN%mYx@(VsF(E9w_1b|A1c})MRHk z45dAKZBK$Edrc34D9wK!ogX|7zO(l@_=DMl@tDWOe9gA#us^|3MnRybA+d zKgj+D+g3dW28L4OP>*KYTcCjkkItthydK@Qae5#xpU`Dsc#-`7|NmpGF?tLPjIl@# zJ`73(X$TL1%zK&s|Ns9`kItvT9?fqwUPS);|KFpt_C{yvmCn!$$6eom0uD;O4(fKj z;4#DF-~*=a&^I2*mppoTKwUoukM7VL9=$Sx9-YTuaDWY9?sk3SF~g%*67EGe<1DzQ?He~UH_oi_5umSB$*FV;- zPin4Cm;muU*vN~2z`h3=*%|r(YN|&ss~`_3bsm2a_~-wBsOW1)kR`pMygUpHoyR;n zukQf4;D!I6|NlV}$gu#my*u;)Bo_RcL9qaL!gh~d)(zYc3qJh*{~y^w4uAgt@2q{} z(OLSSGxWuA*B_t|g1VsF^+odw#!lBiueD${wu0Q?(e3)cgYiN)gQe@6Qtoco7uv3W zI$eLf=4#IU!`NK=hoSO9w<}VlTfDgS8|>{H9-XBZIz!KN`kpxM`T%6qan~mh3e0=S z#K^$V?Ro~17(szK5v`kK~gc2Olzd^vZB`ho151_I=^ed9L&Li^hNd|93JYIb|xy5g_|bet}ZX z1IBLG2iC49_H;=(tm&w13V9(*bk~cUnu@S&AyEw*LH$k(;51p+x1B& zIItNHG#_B>bp6up`lR^)BjbTi*B|ga{l(h#L9JQ0>lbi7f@Ns1GXy|kFvFvl2TAlq zH-qJ&I<{`tFJPm8Kz08hQTGq9?hn?kPfCg*si9W{$(9S<44tljpw^>G;L6Nc6d&q# z{nN?R9r^*3{kmOWK+@28P&Pt}LErD7L!9E}bnultWBZ$yE*m(+?SW(hL z^C8Ag0i+6U4T=Lld_{8L7mz!SyZ!*TM5i-=%63q29DKm!(Hrmw4C7q!QQarj@R5chtC8_HV!vo!}ORQZN@b|t4S6@py zU3YZ5F6ngL(CxaQ({;jsouvjXb-9UxJ-?^k#*g7aKGU$^T9Yu5!e zM_#iu=Wb!_cHII}2hSV?be{q1-clQn)mDa1*F9Jb4BY?qt`S5qT&Ra3Nw(3Zr1~FEv^uO6L0~O z&;S2V0M$t;9@>!PP{R6R{-^){kqVm!pCI`GoY*^EK^gr=cK{DaSGNZTi1O%WfRrv1 z{=#b;L|Y!zv02TxF5#hZ;P+l9w!yyDfa~U9i=wby7 z!6l_Bsd*&|swoOq;F;IZ;>7e+1uF&BVg;ML(%hufB8B`kg<^;@J7lr+qQsO`g@V)~ zB-xbIq|$VS-24=f5e7Aec3cb^s>XW8DVhq7MMa5~AWKwDQxq5&7^Ru5L36pFIf9P& z|NnC^GB9L(`2YU^0|Ud15C8vPVPIgm@!|h}P_e)93v7|N8&`022d)_TT^iA22a6RQ&z_A3V{@ zz`y_-i)X9~VqmNgV3g)z=a|3=?sAR>274)M zEn^k%bRH;jdKefODnI=H-v!d>2r}E5m(8`AnW+J6Ja~R}0|NuY{SW{DuR&L{2%-k$ zMo`$MfBgR+yyOFB4wD~P0Z1Mc=CeNj|34Ag45l8qya*!$1NW!@|5H)q6TtEycbYIV zFa&)1|KA5xSHsMAZDwY6VuY)SU}RvZ`27EW1F{2^yhajuK z2OSoH4_3?^3{WJ%#w@|W%)!kp046}1$-tmNL6G}Fc7fI~fQ$f%fiQ?Yibq3WGz3ON zU^E0qLtr!nMnhmU1Q-}#>%w5`z(8#$P`H5Bo`Go4L??)bEkuK@O;V8qi!w+;CZx zH`Jk^iCGX|0z@z{Fo;5F7zLU*2C-j&8_A#*av&Z9g9TJSsI3bU0ZkBtXwZ685ZwWF zAWVD)lmQiH08eHxFff27jzQ{S_W%A5@egb%-9IQl0;>N%ln=F@;RBSf1C{>?<-^ls*QfuR-Z&Q2HB`hS>{S zmk0_!cV}lS1r2w)BxHH$&4oxGM)W6PbdjS73*!?}p}+a#%kLSuq0x!+&PbQf@|Y zYU9#kU|^7Cb{B)V1++>Mn|GKw*x!Q|aI>(3`q$hX%#0i*AU+fO91z9GRtBP&SW6ih z7j`ogVxnEv&u0tFfhT*X5c&rQn-ML52VHvBnMh9&LFrRwD>cM z6=c7N7)Uz<1GxVW5}vb*k%58nDkB3!6dy_cSk)-CW8mm zvH+GW1`h#{1k=P2p?^?|{()=(?F87#$iU#u4{{09#0UlkVNlV@XbujYWT;w@mqE%I z=j;MG3RF0oOG6BdVFc~!G1rIa4*)yL+z}!d!3tW2YzcKn21_P`6_lOBz#h!Vz@U9e z7-TF114uWB#W;tTnSlZ9Pi+N=KO?|KYMVfe3;}yn+Y`bIV98|AMHuPG$iSdf4>b}z zssxVFAefO#;>boSX+sPNVaa4rK^W2m8g07_EeAlU7vipsFhfM7A%=K>-6f(AF~kMz zE)f?9&w(YAK@4hS1WOi!IFud3AhH3Jytvq4ITJjF26iRb(_AvhhI1J}jDr}?6KC2wIwg2hKqD&G7>{&wd5|WE=>`yH1~X{mlp!aC zm&3qj%EZ7Rq6Dq|!2^Y06IGZP7??or6%l}$s0vak4bd0^cD)GH^#RPRObiTSP(u@# zL1W6|P+ki2YeohJ2`CR@y(E;E!ypJMUl}>rV2J@dk_mPI*m4eWnB}0r;!uKG&U}lJ zfq@GeLM_k`V$WpYhREkIFo1TEure@m)G{$JFeB0)X#EQ)?V;Cpub3GaSe!r!kcACh zj&aUpkb^*BAqHYGO^jd!xkhm&sNkO%!fFN5$HoTXrZ8nP@I#mxOeMJm3_=i24g(tp zh{X;`w+tQ7%<-3rfq@s{K+tX$kOR@H*FF{o21b<3!N->1A}NuViE%*8yASpz!}cOz`zd5ogAE?i3JW2lZSyB zM6vsV!jF>~l()EInHU&ugGBW~DY_jL!XOp{Gsv%8i!U|{9~rD>2hMqV~pT!BZqK}lr}H^}e2q9Cs` zPn=QD1M?-XJFvwXW-^$VBmo|k%NJOR}JiFKDa^L z$OiF)iZ}td9M}?w6@qXEZf+`8p0WtuT7@+Rs0|zQB zNT9*Yj1hz^@E~M`L;)MrWN_?&LJMX#C?wetk)p^6i8&52P^^H0mKziioVbFI3+gTo z1_o|Oxbf&Qfa8qY8XPvD2w-5~g<204gajC_5JpuCG63XA0Z_oBg)z(%pa6m;K1CLI z>VtVpkqsuqjLRP^a7)3F2Qe5DDUbvT4GK`I2BlAMsIVhE&%g*}Lm~(iX3X$7AS%(D zgHs(lYPfUof}%l@36iB47&sw(P!H91@@y5oBca6b3Pb6d62)^|=`sgds^lM3@m-ohUEJ zAz*Eu!XPJ$i86wm3DPPKbv;-XBnSz4NDh}km4rz#Fi6636N5dt{^MY90wn=P#@~Fr z42<9gJ7^;=BO{|c6Q~-@0#yJYHgqrrRM3Iibqt`!76YiUzzACD#K_9Xz{vz_xiWJx zvT|~ivT~KOvX-#Q8n7BhunKsw%5p@oiZC#-FgCHO*|KtS*sv-vFtISdXXOJ4da*LL zw}Q0c)5mAa%2~oHZNMtWk;bZY0;D~KRS2RTWEfLD+^{Z?VYW~=$QU5(TLo9r=F7^- zksswQdPaZ3ytsyHX$68i_60q_TR{1Da(+F01FIJA-tV|`W3LuNpSb0vcDsy(JT(o$CTGFHwERsoKatO^TQ#hX~=uCt0Zu}WWO6>4IY zyTNJ_!7As)D!ZH2ID%Eyim}OiT=n zjEfmT{R<8Te_Tn31(bw9+wM-i(4C`7ziS=(3{=YwO3RVE@M6iN1GJ>Mdhm}1O9BzzFtQJs787M6VmXvN`72&X9m5F5K15q4atfG3X zeEO`i95$?+k*tgyb|4#VOIf+fSy`X3avDGqHHQ_eB*+{uR<3MNdXY8&8^agLD#>BP zDwL+r$~lo$7VLg=R&j_*##~T(v}NTeXJt=g<@I6ZpU=t(lA6cLRR;35hyldqC6E-% zq#*>hj1goaNSzH>npp=HAdGEHEDVf{3qai|1`Y;LBbO0dPG~k~Wt??K9uURh#VVr5%A?OJz+uD67sIN0jg>FWmQ}8al`oBzb25{XFq4uf zhcGK6hX|`OM+Pf5hcGK^Gb<0rby!|1EX_>LF3vA1VMxo&ONlQ^%*&34u4!U`((&N+ zObqURp$g7M#^?i<3c9%^rFp5g>8W|CMVZM8y19u($r-kg6BZP7(-m|JPz@?(D9tO* zOwUVAQ2=k22Ww0$Nd?=hw7`lXCqFM;0ZgEn2=-iYJVXt6cRiF1-lGo<0+>8_^FP=OFadHA zNC>I}tUC>|MIRQ3P${@MAg4k-2GR|+Jts9Uy(EJnu_(O^;SH!DC~{z?6(c+a(a8Xz zU|xnEDUeu{p3DF_FQ6nfw;;YOF{d<@p(rywqa;2rKLvDt0qBT=_!8(*138IB>8Zs~ zIgkuPMrvXK$YO?^)HJAgT4qskNqll*P7XtHW?BhDad~1vL23#^QfX3BPAXWjV^MlB z$PYNk1UsrqF+BLv!obPM8Bl6Ahj5LibQ;gUIv(< zmw^<}ddWyOC&R)5tV=Hg#?=FFRRlGhuw&3X1PjB*|LC%yX$x%Ppl&B4gA@a7*abSR z#Q-{9hLJ&%0XAR-6E^^jU12dFbc_Qw^Fi*wChiF;ni<3x(C2Z2KpGeX7+~k&fVm6| z44{!=Mg|E6*t{7`9CFSFF9Z5ODrme@h=G>@ePkIl_W&Jpg&6^+*MiRr;blM{I@<&m z2P;7#j^Pl0jN|+g&=8jbgCs)+ba)G97$~AZ?nEE85Mac94viv6oQan~06O0Z9fW4k z0I$)MWT-(iA2i$oG9T9Z0kwxfc3XqZ;bVZ!n}WnZ*byWSVxVEr=nTjlSgRZqz91zz zVD-EVuv!u}YElLk2dO~CogjCDwyL2DGl14Mg3L!BRbLJ^hnE3;kQ6k$jV&IJfz_iK z4q96avKLGEKgFT`A6T51!2q;a5Olr~)JR??1_nVUNe0-wA5@q@3M3912!}3Ugyk1a zChYMD8fC=he$eQd0D}}m2UOm?{@h7l2F9Z5C7HIu4C|(-S!i|R+6#l#n=o3H+%-GLovI46|wG+ex&Fz2} zCWAOgI2WXzi5ui;BvA&2WW?c$QelFa1zf=p0rFsZm0 zVig0pfekrp3dI1}X;zR%7+lI2DJ&u3ky?^kQG%2hQI4vD>jQ-=sDX_l0BS=bTDtM^ zA->M>u6{1@@sL=7NkIc1e3TW|&etN!3fwE7dC~$}dPQDyd}9g9{~<@o7bgxvB9PDMbh#gI+OM6zV)jCr{my#B_)`(2xV017oLD<|XE4 zCNt=z=a+y9J+QS9E0T(f8T69#b8}PkN*MGYU9-fZ#Ju#>Vi-3wFD)O&PE1NFN-cx& zax(K$VeDd%*CF~r!to$Jq?DtW1hq@qLBoYmlR6-aO&DM_S~1T6Ui1M~3!*>=LLlqM zbq*v*EeONvYY-cR9l`BW#QH2;=XrwEf-tDv4WeNf)V}@p|9?JgJq-uc0vHWi+5l1u ztH;sZ4_Z|KT1y7g4_j{rqd~LZApM|`RFK^;{h-l#ka#p`#SBvT!Pc+AXxMr+kXjH1 znE|3H2ecn3v)lroiMt9fq?)l}Xqx-)Tsvk5U4Kfe5ehx;1))|4sLHa>qhOQqp0}2Wgko!RDVCxNG zG$?(7#i0Z=dZ9c9$Y3^T$`UG~0P28&`UX%My!Qzz2cn?DFyk3OlglXfL)&+-cAhe9 z;Uh>hc&P%E0i{3#qR9GT?R*%GrX74GSK!dXmAz8g<)9u!T6y5 z6v%#9{KNWlFdDQM4yG1Fqle#aH2WPu8#h7ia41~>GZ>^9G{Fs}VHD_)l`lx?7yX=6 z&@d)UEr>>U|5*kG2ITSs*LkoYy&#P4e$cuR(B30xu?1g`dO#PX8n)~X!UmBr`(gBR z=&~A^e%N|d&{;Of>OpJ}hUtURpP^|FrXSYNz5ul!v}^>V50<`R`e5l0v_Bpce=z;9 za~C)0gLE-4SU@N^3DXawL5sDJ^~3t@FQEFthXBEKBf;)i`aoug&>R#5{KdGPy<2xK4D@Y8eOd})P9g0G7dL{@YcW<`a-x2==v>j=w}8U_{zY* zP=c0V(e=CI&|eN+R?!bCIH7ifD0KaxRd*mUsCPk1z?jVyOfeis%fBGCAQ>1P2eltv z|5 #include "heapsort.h" #include "bubblesort.h" +#include "quicksort.h" void generate_grades(int** students_array, int students_number, int grades_number) { @@ -55,7 +56,6 @@ int find_rank_student(int student_grade, int* grades_array, int students_number) { int position = -1; int i = 0; - bubblesort(grades_array,students_number); for(i = students_number-1; i >= 0; i--) { if(grades_array[i] == student_grade) @@ -77,7 +77,8 @@ void sort_students(int** students_rank, int** students_array, int students_numbe { grades[j] = students_array[j][i]; } - bubblesort(grades,students_number); + //heapsort(grades,students_number); + quicksort(grades,0,students_number-1); for(j = 0; j < students_number; j++) { students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);