diff --git a/TP2/Rplots.pdf b/TP2/Rplots.pdf index d890bdf267629e37a162fcce705f5c56e4bc8db9..efb26aa0cc6204a3ae96f8680c14c62026cddf4d 100644 Binary files a/TP2/Rplots.pdf and b/TP2/Rplots.pdf differ diff --git a/TP2/fusion.dat b/TP2/fusion.dat deleted file mode 100755 index d72f00ff1d19c5b3b1ce201f313fea89385b35a2..0000000000000000000000000000000000000000 --- a/TP2/fusion.dat +++ /dev/null @@ -1,61 +0,0 @@ -iTest taille temps mem algo typeTableau -1 50000 1.86 1344 i a -1 70000 3.56 1652 i a -1 90000 5.88 1892 i a -1 50000 2.34 1396 i m -1 70000 4.52 1728 i m -1 90000 7.58 1876 i m -2 50000 1.85 1388 i a -2 70000 3.54 1644 i a -2 90000 5.87 1660 i a -2 50000 2.30 1392 i m -2 70000 4.50 1736 i m -2 90000 7.42 1612 i m -3 50000 1.84 1388 i a -3 70000 3.54 1572 i a -3 90000 5.88 1884 i a -3 50000 2.35 1388 i m -3 70000 4.49 1744 i m -3 90000 7.43 1892 i m -4 50000 1.81 1288 i a -4 70000 3.53 1660 i a -4 90000 5.86 1612 i a -4 50000 2.30 1336 i m -4 70000 4.50 1656 i m -4 90000 7.42 1576 i m -5 50000 1.81 1352 i a -5 70000 3.54 1652 i a -5 90000 5.87 1552 i a -5 50000 2.30 1388 i m -5 70000 4.48 1664 i m -5 90000 7.43 1840 i m -6 50000 1.83 1400 i a -6 70000 3.54 1608 i a -6 90000 5.86 1664 i a -6 50000 2.30 1564 i m -6 70000 4.50 1552 i m -6 90000 7.43 1608 i m -7 50000 1.81 1396 i a -7 70000 3.54 1664 i a -7 90000 5.86 1616 i a -7 50000 2.27 1356 i m -7 70000 4.48 1664 i m -7 90000 7.43 1892 i m -8 50000 1.81 1288 i a -8 70000 3.54 1580 i a -8 90000 5.85 1644 i a -8 50000 2.29 1292 i m -8 70000 4.49 1612 i m -8 90000 7.40 1616 i m -9 50000 1.81 1464 i a -9 70000 3.58 1728 i a -9 90000 5.87 1616 i a -9 50000 2.29 1344 i m -9 70000 4.50 1652 i m -9 90000 7.43 1776 i m -10 50000 1.81 1336 i a -10 70000 3.55 1552 i a -10 90000 5.85 1964 i a -10 50000 2.33 1388 i m -10 70000 4.49 1608 i m -10 90000 7.42 1600 i m diff --git a/TP2/ggossaprodansR.png b/TP2/ggossaprodansR.png deleted file mode 100644 index 90103439e1c741904d603f17a0f2e33373416a53..0000000000000000000000000000000000000000 Binary files a/TP2/ggossaprodansR.png and /dev/null differ diff --git a/TP2/graphe.png b/TP2/graphe.png deleted file mode 100644 index b3aa9edf01a7f0552332693a41556aaed96c3b91..0000000000000000000000000000000000000000 Binary files a/TP2/graphe.png and /dev/null differ diff --git a/TP2/grapheFusion.png b/TP2/grapheFusion.png deleted file mode 100644 index 1a1f97ec06723420b6df651ed86c82494f7bb844..0000000000000000000000000000000000000000 Binary files a/TP2/grapheFusion.png and /dev/null differ diff --git a/TP2/main.c b/TP2/main.c index 5b3eb6c30a417d881ade9843c4355104a1973aec..5338f01ae7eca15447f47f393ded4cece5c04acf 100644 --- a/TP2/main.c +++ b/TP2/main.c @@ -7,8 +7,8 @@ #include "utils.h" int main(int argc, char *argv[]) { - if(argc != 5) { - printf("Usage: %s [typeAlgo]Â [taille] [typeTableau] [isAfficher]\n", argv[0]); + if(argc != 6) { + printf("Usage: %s [typeAlgo]Â [taille] [typeTableau] [isAfficher] [versionRap]\n", argv[0]); exit(1); } @@ -18,6 +18,7 @@ int main(int argc, char *argv[]) { long *tab = malloc(sizeof(long) * taille); char typeTable = argv[3][0]; size_t afficher = (size_t) atoi(argv[4]); + int versionRap = (size_t) atoi(argv[5]); genTab(tab, taille, typeTable, MAX); @@ -33,7 +34,7 @@ int main(int argc, char *argv[]) { break; case 'r': - triRapide(tab, taille); + triRapide(tab, taille, versionRap); if(afficher) { printf("Tri Rapide: \n"); diff --git a/TP2/test.R b/TP2/test.R deleted file mode 100644 index 9d98a9dc31ba5217346a74bf9244d1667de9feb3..0000000000000000000000000000000000000000 --- a/TP2/test.R +++ /dev/null @@ -1,7 +0,0 @@ -library(ggplot2) -perf <- read.table("test.dat", header = TRUE) -ggplot(perf, aes(x=taille, y=temps, group=algo, colour=as.character(algo))) + facet_grid(algo ~ typeTableau) + -geom_point() + geom_smooth() + - ggtitle("Graphes Comparaison Algos") - -ggsave("graphe.png") diff --git a/TP2/test.dat b/TP2/test.dat deleted file mode 100644 index 682bb4ed2f134d73aab052214c15504b2d4eb4bd..0000000000000000000000000000000000000000 --- a/TP2/test.dat +++ /dev/null @@ -1,121 +0,0 @@ --e iTest taille temps mem algo typeTableau --e 1 59296 2.17 1772 i a --e 1 59296 0.00 1704 i r --e 1 59296 4.47 1656 i i --e 1 59296 0.00 1700 i c --e 1 59296 0.23 1848 r a --e 1 59296 11.35 5416 r r --e 1 59296 7.77 5412 r i --e 1 59296 11.25 5412 r c --e 1 59296 0.01 1992 f a --e 1 59296 0.01 1964 f r --e 1 59296 0.00 2032 f i --e 1 59296 0.00 1956 f c --e 2 97794 6.03 1988 i a --e 2 97794 0.00 1988 i r --e 2 97794 12.13 1928 i i --e 2 97794 0.00 2012 i c --e 2 97794 0.61 2116 r a --e 2 97794 30.32 8036 r r --e 2 97794 20.98 8116 r i --e 2 97794 30.33 8100 r c --e 2 97794 0.01 2604 f a --e 2 97794 0.01 2544 f r --e 2 97794 0.01 2680 f i --e 2 97794 0.01 2556 f c --e 3 41540 1.08 1496 i a --e 3 41540 0.00 1576 i r --e 3 41540 2.17 1456 i i --e 3 41540 0.00 1628 i c --e 3 41540 0.11 1628 r a --e 3 41540 5.49 4080 r r --e 3 41540 3.82 4152 r i --e 3 41540 5.39 4224 r c --e 3 41540 0.00 1908 f a --e 3 41540 0.00 1892 f r --e 3 41540 0.00 1836 f i --e 3 41540 0.00 1972 f c --e 4 97964 5.95 1936 i a --e 4 97964 0.00 2040 i r --e 4 97964 12.07 1992 i i --e 4 97964 0.00 2048 i c --e 4 97964 0.62 2124 r a --e 4 97964 32.03 8192 r r --e 4 97964 21.83 8080 r i --e 4 97964 30.63 8024 r c --e 4 97964 0.02 2560 f a --e 4 97964 0.01 2564 f r --e 4 97964 0.01 2544 f i --e 4 97964 0.01 2492 f c --e 5 39669 1.00 1544 i a --e 5 39669 0.00 1496 i r --e 5 39669 2.03 1504 i i --e 5 39669 0.00 1536 i c --e 5 39669 0.10 1552 r a --e 5 39669 5.03 4032 r r --e 5 39669 3.44 3984 r i --e 5 39669 5.00 4024 r c --e 5 39669 0.00 1792 f a --e 5 39669 0.00 1820 f r --e 5 39669 0.00 1840 f i --e 5 39669 0.00 1884 f c --e 6 8038 0.04 1300 i a --e 6 8038 0.00 1300 i r --e 6 8038 0.08 1220 i i --e 6 8038 0.00 1288 i c --e 6 8038 0.00 1300 r a --e 6 8038 0.20 1756 r r --e 6 8038 0.14 1812 r i --e 6 8038 0.21 1808 r c --e 6 8038 0.00 1448 f a --e 6 8038 0.00 1448 f r --e 6 8038 0.00 1332 f i --e 6 8038 0.00 1364 f c --e 7 30705 0.59 1468 i a --e 7 30705 0.00 1524 i r --e 7 30705 1.19 1480 i i --e 7 30705 0.00 1492 i c --e 7 30705 0.06 1472 r a --e 7 30705 3.02 3440 r r --e 7 30705 2.08 3408 r i --e 7 30705 3.00 3384 r c --e 7 30705 0.00 1688 f a --e 7 30705 0.00 1688 f r --e 7 30705 0.00 1616 f i --e 7 30705 0.00 1696 f c --e 8 53435 1.81 1660 i a --e 8 53435 0.00 1700 i r --e 8 53435 3.66 1656 i i --e 8 53435 0.00 1640 i c --e 8 53435 0.18 1676 r a --e 8 53435 9.15 4892 r r --e 8 53435 6.50 5000 r i --e 8 53435 9.16 4928 r c --e 8 53435 0.01 1996 f a --e 8 53435 0.00 1904 f r --e 8 53435 0.00 1988 f i --e 8 53435 0.00 1992 f c --e 9 50961 1.61 1676 i a --e 9 50961 0.00 1640 i r --e 9 50961 3.30 1624 i i --e 9 50961 0.00 1592 i c --e 9 50961 0.17 1716 r a --e 9 50961 8.31 4888 r r --e 9 50961 5.85 4832 r i --e 9 50961 8.27 4852 r c --e 9 50961 0.00 1860 f a --e 9 50961 0.00 1928 f r --e 9 50961 0.00 1884 f i --e 9 50961 0.00 1884 f c --e 10 74748 3.49 1832 i a --e 10 74748 0.00 1828 i r --e 10 74748 7.11 1744 i i --e 10 74748 0.00 1772 i c --e 10 74748 0.37 1932 r a --e 10 74748 17.97 6456 r r --e 10 74748 12.53 6388 r i --e 10 74748 18.00 6496 r c --e 10 74748 0.01 2360 f a --e 10 74748 0.01 2424 f r --e 10 74748 0.01 2380 f i --e 10 74748 0.01 2360 f c diff --git a/TP2/test.sh b/TP2/test.sh deleted file mode 100644 index 027e8ba3efde7d1522c79da0626662c3b091cfd8..0000000000000000000000000000000000000000 --- a/TP2/test.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -affichage=0 -#taille=100 - -echo -e "iTest\ttaille\ttemps\tmem\talgo\ttypeTableau" - -for iTest in `seq 1 10` -do - taille=$(( `od -An -N4 -tu < /dev/urandom` % 100000)) - - for algo in 'i' 'r' 'f' - do - - for typeTableau in 'a' 'r' 'i' 'c' - do - res=`( /usr/bin/time -f "%U\t%M" ./main $algo $taille $typeTableau $affichage > /dev/null ) 2>&1` - echo -e "$iTest\t$taille\t$res\t$algo\t$typeTableau" - done - done -done diff --git a/TP2/fusion.R b/TP2/testGeneral.R similarity index 59% rename from TP2/fusion.R rename to TP2/testGeneral.R index b64e5b999066f2b30b92b715ac3a4b8cb362e1d4..4e3fe27623d9d3b4fd361f90f518a99c0617f617 100755 --- a/TP2/fusion.R +++ b/TP2/testGeneral.R @@ -1,7 +1,7 @@ library(ggplot2) -perf <- read.table("fusion.dat", header = TRUE) +perf <- read.table("testGeneral.dat", header = TRUE) ggplot(perf, aes(x=taille, y=temps, group=typeTableau, colour=as.character(algo))) + facet_grid(algo ~ typeTableau) + geom_point() + geom_smooth() + - ggtitle("Graphes Comparaison Algos") + ggtitle("Test General des Algos") -ggsave("graphe.png") +ggsave("testGeneral.png") diff --git a/TP2/testGeneral.dat b/TP2/testGeneral.dat new file mode 100644 index 0000000000000000000000000000000000000000..caa97a6517251659446997340a3f049ca6f6b210 --- /dev/null +++ b/TP2/testGeneral.dat @@ -0,0 +1,61 @@ +iTest taille temps mem algo typeTableau +1 30000 0.04 1396 r a +1 40000 0.06 1400 r a +1 50000 0.08 1388 r a +1 30000 1.38 3200 r c +1 40000 2.45 3756 r c +1 50000 3.87 4568 r c +1 30000 1.38 3192 r r +1 40000 2.43 3748 r r +1 50000 3.81 4568 r r +1 30000 1.35 3312 r i +1 40000 2.40 3812 r i +1 50000 3.74 4472 r i +2 30000 0.03 1352 r a +2 40000 0.05 1380 r a +2 50000 0.08 1348 r a +2 30000 1.37 3168 r c +2 40000 2.42 3732 r c +2 50000 3.79 4564 r c +2 30000 1.39 3248 r r +2 40000 2.42 3884 r r +2 50000 3.79 4560 r r +2 30000 1.35 3236 r i +2 40000 2.41 3732 r i +2 50000 3.74 4564 r i +3 30000 0.04 1384 r a +3 40000 0.05 1352 r a +3 50000 0.08 1400 r a +3 30000 1.43 3228 r c +3 40000 2.43 3696 r c +3 50000 3.79 4568 r c +3 30000 1.42 3168 r r +3 40000 2.42 3748 r r +3 50000 3.87 4504 r r +3 30000 1.41 3192 r i +3 40000 2.47 3820 r i +3 50000 3.79 4484 r i +4 30000 0.04 1344 r a +4 40000 0.06 1396 r a +4 50000 0.09 1404 r a +4 30000 1.37 3184 r c +4 40000 2.49 3884 r c +4 50000 3.85 4632 r c +4 30000 1.36 3136 r r +4 40000 2.41 3764 r r +4 50000 3.77 4572 r r +4 30000 1.34 3204 r i +4 40000 2.39 3816 r i +4 50000 3.81 4776 r i +5 30000 0.04 1400 r a +5 40000 0.06 1352 r a +5 50000 0.10 1356 r a +5 30000 1.36 3192 r c +5 40000 2.41 3764 r c +5 50000 3.77 4480 r c +5 30000 1.38 3236 r r +5 40000 2.42 3764 r r +5 50000 3.78 4568 r r +5 30000 1.34 3156 r i +5 40000 2.40 3812 r i +5 50000 3.75 4456 r i diff --git a/TP2/testGeneral.png b/TP2/testGeneral.png new file mode 100644 index 0000000000000000000000000000000000000000..eec331107909878fecb953fefbf4622cf8a200f3 Binary files /dev/null and b/TP2/testGeneral.png differ diff --git a/TP2/fusion.sh b/TP2/testGeneral.sh similarity index 62% rename from TP2/fusion.sh rename to TP2/testGeneral.sh index 68ef25319035b09d04cdac2a1c0db18df5e25ef5..51af97d1d6a9fa66dacb9707f5793bbf99be5480 100755 --- a/TP2/fusion.sh +++ b/TP2/testGeneral.sh @@ -1,23 +1,24 @@ #!/bin/bash affichage=0 +versionRap=0 #taille=100 echo -e "iTest\ttaille\ttemps\tmem\talgo\ttypeTableau" -for iTest in `seq 1 10` +for iTest in `seq 1 5` do #taille=$(( `od -An -N4 -tu < /dev/urandom` % 1000000)) #taille=1000000 - for algo in 'i' + for algo in 'r' 'i' 'f' do - for typeTableau in 'a' 'm' + for typeTableau in 'a' 'c' 'r' 'i' do - for taille in 50000 70000 90000 + for taille in 30000 40000 50000 60000 70000 80000 90000 do - res=`( /usr/bin/time -f "%U\t%M" ./main $algo $taille $typeTableau $affichage > /dev/null ) 2>&1` + res=`( /usr/bin/time -f "%U\t%M" ./main $algo $taille $typeTableau $affichage $versionRap > /dev/null ) 2>&1` echo -e "$iTest\t$taille\t$res\t$algo\t$typeTableau" done done diff --git a/TP2/triRapideAleatoirePivotLast.png b/TP2/triRapideAleatoirePivotLast.png deleted file mode 100644 index 12e3a9069b7079f395a0760d6e5b1c841d3be0d1..0000000000000000000000000000000000000000 Binary files a/TP2/triRapideAleatoirePivotLast.png and /dev/null differ diff --git a/TP2/triRapideAleatoirePivotMiddle.png b/TP2/triRapideAleatoirePivotMiddle.png deleted file mode 100644 index 095d128066982d0d8d764594dfc0854317690cbb..0000000000000000000000000000000000000000 Binary files a/TP2/triRapideAleatoirePivotMiddle.png and /dev/null differ diff --git a/TP2/triRapideMiddlePivotLast.png b/TP2/triRapideMiddlePivotLast.png deleted file mode 100644 index d224fe41af957b53faf1acc40a2e80f8aa21a314..0000000000000000000000000000000000000000 Binary files a/TP2/triRapideMiddlePivotLast.png and /dev/null differ diff --git a/TP2/triRapideMiddlePivotMiddle.png b/TP2/triRapideMiddlePivotMiddle.png deleted file mode 100644 index a172b89b18c85c73c67b1e7745ddb1607331af75..0000000000000000000000000000000000000000 Binary files a/TP2/triRapideMiddlePivotMiddle.png and /dev/null differ diff --git a/TP2/tri_rapide.c b/TP2/tri_rapide.c index 163922cd965a9aba7c16e9bcc7eabf4d6f2f6a63..87e5aa686112c485855b62db16987fd2731a627e 100644 --- a/TP2/tri_rapide.c +++ b/TP2/tri_rapide.c @@ -4,19 +4,19 @@ #include "tri_rapide.h" -void triRapide(long* A, size_t n) { - sousTriRapide(A,0,n); +void triRapide(long* A, size_t n, int version) { + sousTriRapide(A,0,n, version); } -void sousTriRapide(long* A, size_t first, size_t size){ +void sousTriRapide(long* A, size_t first, size_t size, int version){ if(first+1 < size){ - size_t middle = partition(A,first,size); - sousTriRapide(A,first,middle); - sousTriRapide(A,middle+1,size); + size_t middle = partition(A,first,size, version); + sousTriRapide(A,first,middle, version); + sousTriRapide(A,middle+1,size, version); } } -size_t partition(long* A, size_t first, size_t size) { +size_t partition(long* A, size_t first, size_t size, int version) { //long middle = (size-1) / 2; //long pivot = A[middle]; @@ -24,8 +24,19 @@ size_t partition(long* A, size_t first, size_t size) { size_t i = first; for(int j = first; j+2 <= size; j++){ - if(A[j] <= pivot){ - permuter(A,i,j); + if(A[j] <= pivot) { + // Version 1: optimisation sur les tableaux ranges + if(version == 1) { + // Si i = j, pas besoin de permuter + if(i != j ) { + permuter(A,i,j); + } + } + // Version 0: celle de base + else { + permuter(A,i,j); + } + i++; } } diff --git a/TP2/tri_rapide.h b/TP2/tri_rapide.h index e17099f3db77cc6284f5e220d7f930886672a500..3ec05885461ce2020df9e87a00663a8bb931ee2b 100644 --- a/TP2/tri_rapide.h +++ b/TP2/tri_rapide.h @@ -3,8 +3,8 @@ #include <stdint.h> #include <stdlib.h> -void triRapide(long* A, size_t n); -void sousTriRapide(long* A, size_t first, size_t size); -size_t partition(long* A, size_t first, size_t size); +void triRapide(long* A, size_t n, int version); +void sousTriRapide(long* A, size_t first, size_t size, int version); +size_t partition(long* A, size_t first, size_t size , int version); void permuter(long* A,size_t i,size_t j); -#endif //TRIS_H \ No newline at end of file +#endif //TRIS_H