From 7c4e1807df1100fda444ba99b6c853f669e4ad59 Mon Sep 17 00:00:00 2001 From: malric litiere <litiere@unistra.fr> Date: Fri, 6 Mar 2020 15:08:09 +0100 Subject: [PATCH] Added projet --- Projet/Makefile | 18 ++++++ Projet/ggossaprodansR.png | Bin 0 -> 63167 bytes Projet/main.c | 56 ++++++++++++++++++ Projet/test.R | 7 +++ Projet/test.dat | 121 ++++++++++++++++++++++++++++++++++++++ Projet/test.sh | 21 +++++++ Projet/tri_fusion.c | 62 +++++++++++++++++++ Projet/tri_fusion.h | 9 +++ Projet/tri_insertion.c | 16 +++++ Projet/tri_insertion.h | 7 +++ Projet/tri_rapide.c | 36 ++++++++++++ Projet/tri_rapide.h | 10 ++++ Projet/utils.c | 55 +++++++++++++++++ Projet/utils.h | 5 ++ 14 files changed, 423 insertions(+) create mode 100644 Projet/Makefile create mode 100644 Projet/ggossaprodansR.png create mode 100644 Projet/main.c create mode 100644 Projet/test.R create mode 100644 Projet/test.dat create mode 100644 Projet/test.sh create mode 100644 Projet/tri_fusion.c create mode 100644 Projet/tri_fusion.h create mode 100644 Projet/tri_insertion.c create mode 100644 Projet/tri_insertion.h create mode 100644 Projet/tri_rapide.c create mode 100644 Projet/tri_rapide.h create mode 100644 Projet/utils.c create mode 100644 Projet/utils.h diff --git a/Projet/Makefile b/Projet/Makefile new file mode 100644 index 0000000..01fc0ab --- /dev/null +++ b/Projet/Makefile @@ -0,0 +1,18 @@ +all: main + +main : tri_fusion.o tri_insertion.o tri_rapide.o utils.o main.c + gcc -o main -Wall utils.o tri_fusion.o tri_insertion.o tri_rapide.o -g main.c + +tri_fusion.o : tri_fusion.c tri_fusion.h + gcc -c -Wall -g tri_fusion.c + +tri_insertion.o : tri_insertion.c tri_insertion.h + gcc -c -Wall -g tri_insertion.c + +tri_rapide.o : tri_rapide.c tri_rapide.h + gcc -c -Wall -g tri_rapide.c + +utils.o : utils.c utils.h + gcc -c -g utils.c +clean : + rm *.o diff --git a/Projet/ggossaprodansR.png b/Projet/ggossaprodansR.png new file mode 100644 index 0000000000000000000000000000000000000000..90103439e1c741904d603f17a0f2e33373416a53 GIT binary patch literal 63167 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 Bs#gF2 literal 0 HcmV?d00001 diff --git a/Projet/main.c b/Projet/main.c new file mode 100644 index 0000000..a35c68d --- /dev/null +++ b/Projet/main.c @@ -0,0 +1,56 @@ +#include <stdio.h> +#include <stdlib.h> +#include "tri_insertion.h" +#include "tri_rapide.h" +#include "tri_fusion.h" + +#include "utils.h" + +int main(int argc, char *argv[]) { + if(argc != 5) { + printf("Usage: %s [typeAlgo] [taille] [typeTableau] [isAfficher]\n", argv[0]); + exit(1); + } + + char typeAlgo = argv[1][0]; + long taille = (long) atoi(argv[2]); + long MAX = 50; + long tab[taille]; + char typeTable = argv[3][0]; + size_t afficher = (size_t) atoi(argv[4]); + + genTab(tab, taille, typeTable, MAX); + + switch(typeAlgo) { + case 'i': + triInsertion(tab,taille); + + if(afficher) { + printf("Tri Insertion: \n"); + affichertab(tab,taille); + } + + break; + + case 'r': + triRapide(tab, taille); + + if(afficher) { + printf("Tri Rapide: \n"); + affichertab(tab,taille); + } + + break; + + case 'f': + triFusion(tab, taille); + + if(afficher) { + printf("Tri Fusion: \n"); + affichertab(tab,taille); + } + break; + } + + return 0; +} diff --git a/Projet/test.R b/Projet/test.R new file mode 100644 index 0000000..9d98a9d --- /dev/null +++ b/Projet/test.R @@ -0,0 +1,7 @@ +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/Projet/test.dat b/Projet/test.dat new file mode 100644 index 0000000..682bb4e --- /dev/null +++ b/Projet/test.dat @@ -0,0 +1,121 @@ +-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/Projet/test.sh b/Projet/test.sh new file mode 100644 index 0000000..027e8ba --- /dev/null +++ b/Projet/test.sh @@ -0,0 +1,21 @@ +#!/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/Projet/tri_fusion.c b/Projet/tri_fusion.c new file mode 100644 index 0000000..7453f70 --- /dev/null +++ b/Projet/tri_fusion.c @@ -0,0 +1,62 @@ +#include <math.h> +#include <stdlib.h> +#include <stdio.h> +#include "tri_fusion.h" + +void triFusion(long* A, size_t size) { + sousTriFusion(A, 0, size); +} + +void sousTriFusion(long* A, size_t first, size_t size) { + if(first+1 <size){ // p < r - 1 + size_t middle = floor((first+size)/2); + sousTriFusion(A, first, middle); + sousTriFusion(A, middle, size); + fusion(A, first, middle, size); + } +} + +void copySousTable(long* mainT, long* underT, size_t id, size_t size) { + for(size_t i = id; i < id+size; ++i) { + underT[i-id] = mainT[i]; + } +} + +void fusion(long* A, size_t first, size_t middle, size_t size) { + size_t n1 = middle - first; // Nb elem dans A[p , q] q exclu + size_t n2 = size - middle; // Nb elem dans A[q , r] r exclu + + size_t indg = 0; + size_t indd = 0; + + long* ag = malloc(sizeof(long) * n1); + long* ad = malloc(sizeof(long) * n2); + + copySousTable(A, ag, first, n1); + copySousTable(A, ad, middle, n2); + + int i = first; + + while(i < size) { + if(indg == n1) { + A[i] = ad[indd]; + indd++; + } + else if(indd == n2) { + A[i] = ag[indg]; + indg++; + } + else if(ag[indg] < ad[indd]) { + A[i] = ag[indg]; + indg++; + } + else { + A[i] = ad[indd]; + indd++; + } + ++i; + } + + free(ag); + free(ad); +} \ No newline at end of file diff --git a/Projet/tri_fusion.h b/Projet/tri_fusion.h new file mode 100644 index 0000000..093102c --- /dev/null +++ b/Projet/tri_fusion.h @@ -0,0 +1,9 @@ +#ifndef TRIS_F +#define TRIS_F +#include <stdint.h> +#include <stdlib.h> + +void triFusion(long* A, size_t size); +void sousTriFusion(long* A, size_t first, size_t size); +void fusion(long* A, size_t first, size_t middle, size_t size); +#endif //TRIS_H \ No newline at end of file diff --git a/Projet/tri_insertion.c b/Projet/tri_insertion.c new file mode 100644 index 0000000..b276ebd --- /dev/null +++ b/Projet/tri_insertion.c @@ -0,0 +1,16 @@ +#include <math.h> +#include <stdlib.h> +#include <stdio.h> +#include "tri_insertion.h" + +void triInsertion(long* A, size_t n) { + for(size_t i = 1; i <= n-1; i++){ + long cle = A[i]; + size_t j = i - 1; + while(j+1 >= j && A[j] > cle){ + A[j+1] = A[j]; + j = j-1; + } + A[j+1] = cle; + } +} \ No newline at end of file diff --git a/Projet/tri_insertion.h b/Projet/tri_insertion.h new file mode 100644 index 0000000..7e92151 --- /dev/null +++ b/Projet/tri_insertion.h @@ -0,0 +1,7 @@ +#ifndef TRIS_I +#define TRIS_I +#include <stdint.h> +#include <stdlib.h> + +void triInsertion(long* A, size_t n); +#endif //TRIS_H \ No newline at end of file diff --git a/Projet/tri_rapide.c b/Projet/tri_rapide.c new file mode 100644 index 0000000..41eaa3b --- /dev/null +++ b/Projet/tri_rapide.c @@ -0,0 +1,36 @@ +#include <math.h> +#include <stdlib.h> +#include <stdio.h> +#include "tri_rapide.h" + + +void triRapide(long* A, size_t n) { + sousTriRapide(A,0,n); +} + +void sousTriRapide(long* A, size_t first, size_t size){ + if(first+1 < size){ + size_t middle = partition(A,first,size); + sousTriRapide(A,first,middle); + sousTriRapide(A,middle+1,size); + } +} + +size_t partition(long* A, size_t first, size_t size) { + long pivot = A[size-1]; + size_t i = first; + for(int j = first; j+2 <= size; j++){ + if(A[j] <= pivot){ + permuter(A,i,j); + i++; + } + } + permuter(A,i,size-1); + return i; +} + +void permuter(long* A,size_t i,size_t j) { + long inter = A[i]; + A[i] = A[j]; + A[j] = inter; +} diff --git a/Projet/tri_rapide.h b/Projet/tri_rapide.h new file mode 100644 index 0000000..e17099f --- /dev/null +++ b/Projet/tri_rapide.h @@ -0,0 +1,10 @@ +#ifndef TRIS_R +#define TRIS_R +#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 permuter(long* A,size_t i,size_t j); +#endif //TRIS_H \ No newline at end of file diff --git a/Projet/utils.c b/Projet/utils.c new file mode 100644 index 0000000..791c21c --- /dev/null +++ b/Projet/utils.c @@ -0,0 +1,55 @@ +#include <stdio.h> +#include <stdlib.h> +#include "utils.h" + +void affichertab(long *T, int s) +{ + printf("[ "); + for (int i = 0; i < s - 1; i++) + { + printf("%d , ", T[i]); + } + printf("%d ]\n", T[s - 1]); +} + +void genTab(long *T, long taille, char type, long MAX) +{ + + switch (type) + { + case 'a': + //Tableau Aleatoire + for (long i = 0; i < taille; ++i) + { + T[i] = rand() % MAX; + } + break; + + case 'r': + //Tableau Rangé + for (long i = 0; i < taille; ++i) + { + T[i] = i; + } + break; + + case 'i': + //Tableau Rangé Inversé + for (long i = 0; i < taille; ++i) + { + T[i] = taille - i; + } + break; + + case 'c': + //Tableau Constant + for (long i = 0; i < taille; ++i) + { + T[i] = 0; + } + break; + + default: + break; + } +} diff --git a/Projet/utils.h b/Projet/utils.h new file mode 100644 index 0000000..15623a3 --- /dev/null +++ b/Projet/utils.h @@ -0,0 +1,5 @@ +#include <stdio.h> +#include <stdlib.h> + +void affichertab(long* T, int s); +void genTab(long *T, long taille, char type, long MAX); -- GitLab