diff --git a/Algos_1/a.out b/Algos_1/a.out index ce356845c9f1c0a90b7087c5a90462f4120f8863..90baa49ed092241204268204f4299208bdeb685f 100755 Binary files a/Algos_1/a.out and b/Algos_1/a.out differ diff --git a/Algos_1/algos.c b/Algos_1/algos.c index b5ea19f010487b2665558513ae508c27399be957..acc21a9f09d55afad868c17d48202b5a742f2b12 100644 --- a/Algos_1/algos.c +++ b/Algos_1/algos.c @@ -3,8 +3,7 @@ void triInsertion(long* A, size_t n){ long cle = 0; - size_t max = 0; - max--; + size_t max = 0; max--; for(size_t i = 1; i<n; i++){ cle=A[i]; size_t j = i - 1; @@ -75,33 +74,30 @@ void triFusion(long * A, size_t n){ } void sousTriRapide(long* A, size_t p, size_t r) { - if (p<(r-1)) { - size_t q = partition(A, p, r); - sousTriRapide(A, p, q); - sousTriRapide(A, q+1, r); + size_t max = 0; max--; + if(r-1 != max){ + if (p<(r-1)) { + size_t q = partition(A, p, r); + sousTriRapide(A, p, q); + sousTriRapide(A, q+1, r); + } } + } size_t partition(long* A, size_t p, size_t r) { - printf("r >>>>>>>>>> %d\n", r); - size_t max = 0; - max--; - size_t pivot = 0; - if(r-1 != max){ - pivot = A[r-1]; - } + long pivot = A[r-1]; size_t i = p; - long temp; - for (size_t j = p; j < r-2; j++) { + for (size_t j = p; j <= r-2; j++) { if (A[j] <= pivot) { - temp = A[i]; + long temp = A[i]; A[i] = A[j]; A[j] = temp; i++; } } - temp = A[i]; + long temp = A[i]; A[i] = A[r-1]; A[r-1] = temp; return i; diff --git a/Algos_1/algos.o b/Algos_1/algos.o index fcca01db38feaff275db7d0b477cb2e77af7d5ac..d6ac934c984060b2a1e49881fa9ffa3c0df8ed03 100644 Binary files a/Algos_1/algos.o and b/Algos_1/algos.o differ diff --git a/Algos_1/main.c b/Algos_1/main.c index b60a072b2fe67091855531968b4fc9a3f33bbf9c..c53b2293a0e0db148af8e6ee2c8de3e209d8cd62 100644 --- a/Algos_1/main.c +++ b/Algos_1/main.c @@ -17,7 +17,7 @@ int readToTab(long* tab, char* file){ if(temp != ' '){ tmp[x] = temp; x++; - n++; + } else if(temp == ' '){ long t = atol(tmp); @@ -25,6 +25,7 @@ int readToTab(long* tab, char* file){ memset(tmp, 0, 1000); j++; x=0; + n++; } read(fd,&temp,sizeof(char)); } @@ -44,7 +45,7 @@ int main(int argc, char **argv){ } printf("\n"); - if((strcmp(argv[1], "--insertion") == 0)){ + if((strcmp(argv[1], "--insertion") == 0) || strcmp(argv[1], "-i")== 0){ triInsertion(tab, n); printf("Insertion : "); for(int i = 0; i<n; i++){ @@ -52,7 +53,7 @@ int main(int argc, char **argv){ } printf("\n"); } - else if((strcmp(argv[1], "--fusion")== 0)){ + else if(strcmp(argv[1], "--fusion")== 0 || strcmp(argv[1], "-f")== 0){ triFusion(tab, n); printf("Fusion : "); for(int i = 0; i<n; i++){ @@ -60,9 +61,30 @@ int main(int argc, char **argv){ } printf("\n"); } - else if((strcmp(argv[1], "--rapide")== 0)){ + else if((strcmp(argv[1], "--rapide")== 0) || strcmp(argv[1], "-r")== 0){ + triRapide(tab, n); + printf("Rapide : "); + for(int i = 0; i<n; i++){ + printf("%ld,", tab[i]); + } + printf("\n"); + } + else if (strcmp(argv[1], "-a") == 0) + { + triInsertion(tab, n); + printf("Insertion : "); + for(int i = 0; i<n; i++){ + printf("%ld,", tab[i]); + } + printf("\n"); + triFusion(tab, n); + printf("Fusion : "); + for(int i = 0; i<n; i++){ + printf("%ld,", tab[i]); + } + printf("\n"); triRapide(tab, n); - printf("Rapide : "); + printf("Rapide : "); for(int i = 0; i<n; i++){ printf("%ld,", tab[i]); } diff --git a/Algos_1/makefile b/Algos_1/makefile index 966a11e83b37b2412898baeb92fce69d49ecec01..09e964d3506be09330036bbbeebdd2c8de9f57c3 100644 --- a/Algos_1/makefile +++ b/Algos_1/makefile @@ -1,7 +1,7 @@ -all: algo +all: tri -algo: main.c algos.o - gcc -Wall main.c algos.o -Wall +tri: main.c algos.o + gcc -Wall main.c algos.o -Wall -o tri algos: algos.c algos.h gcc -c algos.c algos.h -Wall diff --git a/Algos_1/tabs/big_tab_1.txt b/Algos_1/tabs/big_tab_1.txt new file mode 100644 index 0000000000000000000000000000000000000000..95d580ca431fb314e62a4864d8f49d9cc7afbb5f --- /dev/null +++ b/Algos_1/tabs/big_tab_1.txt @@ -0,0 +1 @@ +40 47 12 2 25 3 14 65 48 10 1 56 94 45 36 27 6 7 19 16 24 38 37 11 78 5 18 54 20 21 82 42 32 22 19 9 53 41 99 125 111 248 33 . \ No newline at end of file diff --git a/Algos_1/tabs/medium_tab_1.txt b/Algos_1/tabs/medium_tab_1.txt new file mode 100644 index 0000000000000000000000000000000000000000..68eab9009f11f566f89874593f8edf6711ba2dc1 --- /dev/null +++ b/Algos_1/tabs/medium_tab_1.txt @@ -0,0 +1 @@ +40 47 12 2 25 3 14 65 48 10 1 56 94 45 36 27 6 7 19 16 24 38 37 11 . \ No newline at end of file diff --git a/Algos_1/test.txt b/Algos_1/tabs/test.txt similarity index 100% rename from Algos_1/test.txt rename to Algos_1/tabs/test.txt diff --git a/Algos_1/tri b/Algos_1/tri new file mode 100755 index 0000000000000000000000000000000000000000..b43602ba8d20453637fc51aff0060a392b1dd8eb Binary files /dev/null and b/Algos_1/tri differ