diff --git a/TP1/main.c b/TP1/main.c index 603dad612b3d0a74e93ecff63acae99c67462f46..8b03e2fec88d3284aa059b6a394b596c31f87f1e 100644 --- a/TP1/main.c +++ b/TP1/main.c @@ -5,16 +5,23 @@ int main() { - long T1[5] ={3,2,5,1,4} ; + printf("Tri Insertion: \n"); + long triIns[8] ={3,2,8,4,1,6,7,5}; + affichertab(triIns,8); + triInsertion(triIns,8); + affichertab(triIns,8); - long T2[8] ={3,2,8,4,1,6,7,5} ; + printf("Tri Rapide: \n"); + long triRap[8] ={3,2,8,4,1,6,7,5}; + affichertab(triRap,8); + triRapide(triRap, 8); + affichertab(triRap,8); - affichertab(T1,5); - printf("\n"); - - triInsertion(T1,5); - - affichertab(T1,5); + printf("Tri Fusion: \n"); + long triFus[8] ={3,2,8,4,1,6,7,5}; + affichertab(triFus,8); + triFusion(triFus, 8); + affichertab(triFus,8); return 0; } diff --git a/TP1/tris.c b/TP1/tris.c index 75e4a04f20db097e6d59de18b6db6a100f2421e0..f4037e4c10e06ab2a0bbd9a8fb9ba78174e4ae17 100644 --- a/TP1/tris.c +++ b/TP1/tris.c @@ -17,23 +17,20 @@ void triInsertion(long* A, size_t n) { void triFusion(long* A, size_t size) { sousTriFusion(A, 0, size); - printf("Tri fusion\n"); } void sousTriFusion(long* A, size_t first, size_t size) { - if(first<size-1){ + 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); } - printf("Sous Tri fusion\n"); } void copySousTable(long* mainT, long* underT, size_t id, size_t size) { - size_t i = 0; - for(; id < size; ++id) { - mainT[id] = underT[i]; + for(size_t i = id; i < id+size; ++i) { + underT[i-id] = mainT[i]; } } @@ -46,11 +43,9 @@ void fusion(long* A, size_t first, size_t middle, size_t size) { long* ag = malloc(sizeof(long) * n1); long* ad = malloc(sizeof(long) * n2); - printf("Malloc\n"); copySousTable(A, ag, first, n1); copySousTable(A, ad, middle, n2); - printf("CopySousTable\n"); int i = first; @@ -68,7 +63,7 @@ void fusion(long* A, size_t first, size_t middle, size_t size) { indg++; } else { - A[i] = ag[indg]; + A[i] = ad[indd]; indd++; } ++i; @@ -78,6 +73,7 @@ void fusion(long* A, size_t first, size_t middle, size_t size) { free(ad); } +<<<<<<< HEAD void triRapide(long* A, size_t n){ soustriRapide(A,0,n-1); } @@ -111,4 +107,36 @@ void permuter(long* A,size_t i,size_t j){ // voila le début de tri rapide si j'ai pas le temp de le finir // ni de le testé - \ No newline at end of file + +======= +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; +} +>>>>>>> f61484c65f74d3b49ca5a7a457807526ac75448b diff --git a/TP1/tris.h b/TP1/tris.h index bdcb99e8b60705c54c1abb4df8c0e9c19bad6a56..9c8ed8f448e0eca0f6529fcb430242d84d7a4c4d 100644 --- a/TP1/tris.h +++ b/TP1/tris.h @@ -1,3 +1,4 @@ +<<<<<<< HEAD #ifndef TRIS_H #define TRIS_H #include <stdint.h> @@ -12,3 +13,22 @@ void fusion(long* A, size_t first, size_t middle, size_t size); void soustriRapide( long* A, size_t p, size_t r); #endif //TRIS_H +======= +#ifndef TRIS_H +#define TRIS_H +#include <stdint.h> +#include <stdlib.h> + +void triInsertion(long* A, size_t n); + +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); + +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 +>>>>>>> f61484c65f74d3b49ca5a7a457807526ac75448b diff --git a/TP1/utils.c b/TP1/utils.c index df560764a6b806fd80a4123d6664b2804537493a..be9137a01d4d17a98d52ffb97a0045de94f44ea9 100644 --- a/TP1/utils.c +++ b/TP1/utils.c @@ -1,9 +1,11 @@ #include <stdio.h> #include <stdlib.h> -#include "utils.h" +#include "utils.h" void affichertab(long* T, int s){ - for(int i = 0; i < s; i++){ - printf("%d \n",T[i]); - } -} \ No newline at end of file + printf("[ "); + for(int i = 0; i < s-1; i++){ + printf("%d , ",T[i]); + } + printf("%d ]\n",T[s-1]); +} diff --git a/main.c b/main.c deleted file mode 100644 index 60765850e8a1f0398515296cbfba8c876b639153..0000000000000000000000000000000000000000 --- a/main.c +++ /dev/null @@ -1,6 +0,0 @@ -#include <stdio.h> - -int main( int argc, const char* argv[] ) -{ - -}