From aec719d2b87f9afa1652a29e984695faf06fb3ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Heredero?= Date: Wed, 16 Mar 2022 21:07:50 +0100 Subject: [PATCH] lab12 done --- bin/lab12_sort/SortApplication.class | Bin 3799 -> 5123 bytes src/lab12_sort/SortApplication.java | 87 ++++++++++++++++++++++----- 2 files changed, 72 insertions(+), 15 deletions(-) diff --git a/bin/lab12_sort/SortApplication.class b/bin/lab12_sort/SortApplication.class index afef124756b7f109ceba479929a8d2fd08712494..99016a1b5fa99f7fea99cccb3a675fbeacf768e8 100644 GIT binary patch literal 5123 zcma)AYj_-08Gg^sCbK))d$K9h3v95^q%>WVwkh4TKwBs#q_i|`N(i?}vT3$#cGu0M zZ3@aQT*@605Cyb=go_}hnnntUAQi9*;vGdrLG*__`aC}JSb_MSncc~zDd;BIdC&RI z`ObH~%X`k`m5-i!7Qj;cMTJXXX4>d(XuM!Bn>XX_{92jIrBgkInaXBVxCKI6jcrCe zZDh8@*L81A_Lu_Y%Tt+@d6IxqTh}4rUY+etYEa@&Z+D0V77pMn3C?HZthcR@Zjj_;^FpwdfFDpri=TA1`F$}I98yt zX#aX{+T5H^naR9{8qAf39mnYf!??rJ-O)Q<%tM`u+9^?NA09N513t{h35;NNhyjh- zJEHW(~Mp82%f9! z(69tcRWucqSSfbej-F&rdf$f=tyHpB0Ew{(Lr*)vyd+ z4J&Z63Z~?Yl4M$$&l|&Qj2<(aANJuCtP}{_8`xlEdb0zToatQK(o)yeB6Y0x;Z&SP zm)gTxGTV}QGubQaBH3FQURGNieYy{yk)tE_==T1hzP@zQ8m6HYZ7R+XaCNo#uohM*{b0jsjiF8FHyJ3N=vCr!+BDEJ~N|4-f4?2M7IiK>eMw>P8QAR;cn#mtUqo@ zVfmGxGMA*nj|V9MuVc6dfs1@dV}MhvU~-3ac!>uJ#oQ`uDa*OGm9bdNgU_3H8AuwyQAgp}0OQyNCl}o6&m`QRtldKv_rF)Zk4?af@ z*_btrbj(Z*Bx8Nqd`!bmTq;X#kwlmKa0RZU`;A;Kndv2eFde3Crl5}{bQLooVd=O= z&b(Hj{z%pEu^P%(E*!Z``c*D|gH&;&T=UdVTJvVE85@)nZuQ{{xJ|%gW^FGYo_z)1 zdvLozO}+DpIjFt_YLa#C^x;dgGG#UoCO!Bv>-R8@kOF3-k>A3ARUU!28AgX@=}Ma| z32a^@uo;k`r$0F$=|3{fK|C6QjuJb<(}=7Pcru2)L~)qUUdUa8VWfvRK(x@U+iYB6J#C5;2(*<_9_M&c zD^0R^P7*>#TYAiObJv)@|N!mGACE2>D0A- z_*A0Yf)x^~7W7Hzv7lcp`Zp>eF+d_pwP7}Xl1e!Xf8o7NYlQ9V44&dm!PX|z;Y ztw+Xj?&f+&T3srgp;wOM0^RLMXGrNtKtu!OyC?J!zli!n+U^Oj4AP6}btU``3OFd} zppeoO9>x1gQ)Cofx<4AG!RN+Lu%3<4NZeSj2MV1FN;`vv&ic~MP@$9NNj>)bk%)*! zq)87r>aVLpU-srn&Bb<6X|Y|@S7M#gZp?qm44yz=w16 z@-f_@tMbbuzr6f%D&nqUMeJd2ufScn8%vZsl}DAwc|%tu3yAZ1!IW2!3jS2H{%gnp z^{oB|gs~VAEJY;}d{WvGITi!Ta%7YaWR(%*lp8Qtxf7;xH-?nm*rq&)?aHIrp*(?M zWgI(|XK;yRS8*-*^7JVUA}iJ57B2~#->KO2VW&pP_NvIuMxS?pxlVv zxQ|4>Sh)`O;{h`EQso+aoro_>wBSJ^4^}9bW0c6t_^ii6c$m@L#Fw2%h$585m( z4U6~DjTeX_j7M?5->3h7gUSg8LR0agicrb#0TngQFNBIEfe%n7KH|R!R4fw`&#CZw zKY&X`>ml5C2%ZU9BcH5D$jK^tonIcsQq_O3`4DcOU=S<*hXP=N1@?d0%XHxTn0<6J z0o+U;U_*gq7L4O1(u_qV2aCk>WA@CFyz?4aW+uT@@#_@VjNxZaZ{(L_I5>HUsJ2$P zlmsDzb~#h<3Wo7Ynf5Gtw_M#yD*_@J7^VlN-F68@z^mcr7_?7c1^MzM5apkvDSeO}H30(-F5&dYd)+B-SrCg|}F% z^0Nznw(POYPcq7Mj6x8?RKkVS1V1a<yP$ literal 3799 zcmaJ^Z*)^<8UMXEO>S~?o1}phQvNJe2Boyb6;@c=!3wjiT??h@3MC-iCTV*iO}aEe z3&Tz6oZ@uDZ7_5yxXn7$={7AW=kUSF(c{tMIiBMu{p30OzxUoGO=)LO z(>#CP=g)nf-}BtJfB5*q;iAC zNIE4D?9C>O^pKG=C0`U)<;Tq_fwjG#oIyLiPZ(xKptd32yO2pNpEEOK?VE>G)bL0= z9`8}HLO{=Fv+1em-tk;ElhqJ}M?)=Et5_wlsv=BhE@w=48Hs#0H?1R#I)R!*E@k9X z14bs9ov`$L(1z~r&GByOW37&LST7K^k9B8Gr*ipJQdTULEFO0@luk!<)XURB`*du) zFglt}S;sVd8uzQ%Ah5b3p;#)-(z52#p^lB%#K)37kx9gDw?S;y(TFWllh00CDY}&Xfnz6F!j}}-_ox2Y#wrB4{hx%Baw(3kCGjZjWc13?ILR@ zLe_)F!1i`8!eVTCDxaFr@i=;!SGK@tAv=_rjrPm%#7N4RXm?}305tStK*d3U6&8vX zAJP%Spnz(nohI5s4NKFOH6Yqo-HXCK1v8yY<=i+duyQb)H`0;3IgyHtW^)nQ!H9+@ za72#AprnrKIEK%$t;XbJDw8DsiJB$RicXpR2?3?e@-ZSU69Uc4CHILQT%B8Io{{~M z!N;VFaT)W`{}=NlV@9T=L0ZQISP*wUYtI~?v0R8@Loa!?stt3_CRh-vw5ihCu*5WC#_N0!N@e1K> z7309Dz{W}h*;~DRnWoC2xhzL|(2XlBkH-qv#&P|QfEIZwVpUx7-({O3&ATG;!qhPf ztKXMEyDEX!v()hdxPQRH%l>B!*@NH`5VJ?BQL2=lG^Zxh#FHBatKo}-8u6DCuSWed4Ps>_tGrj>FPR=o7K%K7H@rb{_B zs3OI;8vm-~qWtDMfwS=j-0zT3I9IUL6v9hdw-4~Unw$qd_-$inhUbDb`K_x)ydTi+ zAmHd-Ao~``{R?DURgL&ft8-R)KIE*y@5gI41x~cOZXq~)11sB9&knbvRhz}%9If72 z{4wOc&X^DJBYzZr!u;INPc-BTxo#rVrq7~IQfnj?kkoyWa)~y*>4eCp7a zkhdk|Yzb*$-y9nHOIp9wHXUjzYyFklfYe40HJ7!4N^OnQwuGz7+8U`1SM%=<_l#GB zysm5W+h;Tp(gNDG`3F{#nGsTFA$|k4Cpx-z_13 z)aVa;i^8T#p0(LS`xb*!DAi5%SBF-YC1juo4etUs&*5;!93Te92#tXG46! z_M(^QO+0J~I*SRG1$)D`pR(YyVcU@uyo-IozBwG2@rjU+74uMV3r`FO58c3U$Tf#} z@c0~zS~p`RvvU{?nq=p2iZ-RA*+oagDqFDp>EM$xl5;-feC?xx#J1KR1{Zj-x`_4MQT4ct4YP_dEfaRw%|`_!r!qKA8-Kw$s5gGv{`kI7`Zf9_2|q#hR#$oWU3IG%MMUf3QMlSj!>& z1z#fN%kz{H$RczCtR%3a+K6 zbG$-#h^J}26PoA}1$>Q^SM-Zh?9EQ-;)pQtbyC&h7(TLc@reXR@I15f;~RYXm*Jmh z!(A%AsUlGR<))lxceQ)PLPfBO$`9cbbzYC>LntaD)KgJ?_OMI?VZeYpa}b>n|P7Hw?^SoX%t?iWQ`n}Z*xlONGw*rMs@uh zzE_q8ug&4o!dsx$if|Y!iSunZf^Nid5J#=ILL=idy47(Kq-0O!t7HJL;|*(958zF9 z&cVEYh*mpqv7UC)@=D|Fj^J#c9PVQ3GErtyDGI)2Pj{bV*DRtHXB*dTUFP(Ui>GHC zVqN3ys^qo#KUdnUsY)(q_0ysii`K-2u&@YP2u$EOAK(N*ZSd7I!bOlk3zFD}6pN9- zD8>l5aSptRS8=kUG*>wA=V|Z2CH&kfjSDZ~9ji1^{= 0; iValue--) { + PrintWriter selectionWriter = null; + PrintWriter bubbleWriter = null; + PrintWriter yShortWriter = null; + PrintWriter fusionWriter = null; + + try { + FileOutputStream selectionFile = new FileOutputStream(chemin + "selection.txt", true); + FileOutputStream bubbleFile = new FileOutputStream(chemin + "bubble.txt", true); + FileOutputStream yShortFile = new FileOutputStream(chemin + "yShort.txt", true); + FileOutputStream fusionFile = new FileOutputStream(chemin + "fusion.txt", true); + selectionWriter = new PrintWriter(selectionFile); + bubbleWriter = new PrintWriter(bubbleFile); + yShortWriter = new PrintWriter(yShortFile); + fusionWriter = new PrintWriter(fusionFile); + } catch (Exception e) { + System.out.println("File can't be create"); + e.printStackTrace(); + } + + for (int iValue = 0; iValue <= 450; iValue++) { int value = iValue*200 + 10000; //int value = iValue*10 + 100; Chrono valueChrono = new Chrono(); - long sortTime = 0; for (int iAttempt = 0; iAttempt < 10; iAttempt++) { for (int iTable = 0; iTable < 3; iTable++){ - int[] arrayIN; + int[] array; switch (iTable) { case 0: - arrayIN = ArrayFactory.createRandomArray(value, value); + array = ArrayFactory.createRandomArray(value, value); break; case 1: - arrayIN = ArrayFactory.createInvertedSortedArray(value); + array = ArrayFactory.createInvertedSortedArray(value); break; case 2: - arrayIN = ArrayFactory.createShuffleArray(value); + array = ArrayFactory.createShuffleArray(value); break; default: - arrayIN = null; + array = null; break; } - Chrono sort = new Chrono(); + + int[] arraySelection = array.clone(); + int[] arrayBubble = array.clone(); + int[] arrayYSort = array.clone(); + int[] arrayFusion = array.clone(); Chrono selectionChrono = new Chrono(); - SelectionSort.sort(arrayIN); + SelectionSort.sort(arraySelection); selection[iTable][iValue][iAttempt] = selectionChrono.stop(); Chrono bubbleChrono = new Chrono(); - BubbleSort.sort(arrayIN); + BubbleSort.sort(arrayBubble); bubble[iTable][iValue][iAttempt] = bubbleChrono.stop(); Chrono yShortChrono = new Chrono(); - YSort.sort(arrayIN); + YSort.sort(arrayYSort); yShort[iTable][iValue][iAttempt] = yShortChrono.stop(); Chrono fusionChrono = new Chrono(); - FusionSort.sort(arrayIN); + FusionSort.sort(arrayFusion); fusion[iTable][iValue][iAttempt] = fusionChrono.stop(); - - sortTime = sort.stop(); } } @@ -76,12 +101,26 @@ public class SortApplication { print(value, iTable, "Bubble ", bubbleAverage[iTable][iValue]); print(value, iTable, "YShort ", yShortAverage[iTable][iValue]); print(value, iTable, "Fusion ", fusionAverage[iTable][iValue]); + System.out.println(""); } - System.out.println("Total time for sort " + value + ": " + sortTime/1000000.0 + " s"); + write(selectionWriter, selectionAverage[0][iValue], selectionAverage[1][iValue], selectionAverage[2][iValue]); + write(bubbleWriter, bubbleAverage[0][iValue], bubbleAverage[1][iValue], bubbleAverage[2][iValue]); + write(yShortWriter, yShortAverage[0][iValue], yShortAverage[1][iValue], yShortAverage[2][iValue]); + write(fusionWriter, fusionAverage[0][iValue], fusionAverage[1][iValue], fusionAverage[2][iValue]); System.out.println("Total time for " + value + ": " + valueChrono.stop()/1000000.0 + " s"); System.out.println("---------- ---------- ----------\n"); } + + try { + selectionWriter.close(); + bubbleWriter.close(); + yShortWriter.close(); + fusionWriter.close(); + } catch (Exception e) { + System.out.println("File can't be close"); + e.printStackTrace(); + } } static void print(int value, int iTable, String name, long average){ @@ -91,6 +130,23 @@ public class SortApplication { System.out.print("\n"); } + static void write(PrintWriter writer, long averageT1, long averageT2, long averageT3){ + String s = ""; + s += averageT1; + s += ", "; + s += averageT2; + s += ", "; + s += averageT3; + try { + writer.println(s); + } catch (Exception e) { + System.out.println("File can't be written"); + e.printStackTrace(); + } + + } + + /* static void displayArray(int[] array){ int size = array.length; String s = "Size "; @@ -104,4 +160,5 @@ public class SortApplication { s += "}"; System.out.println(s); } + */ }