diff --git a/TP1/main b/TP1/main index 7ee5fdf9813d85b07241aeccf17b3b50a3794140..d1487facee325fdb0d5f18151a49b23445190c91 100755 Binary files a/TP1/main and b/TP1/main differ diff --git a/TP1/tris.c b/TP1/tris.c index 277e391b806ae698f297fbf47808c5dd8ef6d153..75e4a04f20db097e6d59de18b6db6a100f2421e0 100644 --- a/TP1/tris.c +++ b/TP1/tris.c @@ -77,3 +77,38 @@ void fusion(long* A, size_t first, size_t middle, size_t size) { free(ag); free(ad); } + +void triRapide(long* A, size_t n){ + soustriRapide(A,0,n-1); +} + +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-1); + soustriRapide(A,q+1,r); + } +} + +size_t partition(long* A, size_t p, size_t r){ + long pivot = A[r-1]; + size_t i = p; + for(int j = p; j <= r-2; j++){ + if(A[j] <= pivot){ + permuter(A,i,j); + i++; + } + } + permuter(A,i,r-1); + return i; +} + +void permuter(long* A,size_t i,size_t j){ + long inter = A[i]; + A[i] = A[j]; + A[j] = inter; +} + +// 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 diff --git a/TP1/tris.h b/TP1/tris.h index 5b7b1c2dbeb952cfc194b2369ea0dc4206f980d1..bdcb99e8b60705c54c1abb4df8c0e9c19bad6a56 100644 --- a/TP1/tris.h +++ b/TP1/tris.h @@ -9,4 +9,6 @@ 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 soustriRapide( long* A, size_t p, size_t r); + #endif //TRIS_H diff --git a/TP1/tris.o b/TP1/tris.o new file mode 100644 index 0000000000000000000000000000000000000000..a60fc51aa905726e26b581fcbdde9c80d5f4adfe Binary files /dev/null and b/TP1/tris.o differ diff --git a/TP1/utils.o b/TP1/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..4ff1808805cf14b0b2307154829db41bcb7d719c Binary files /dev/null and b/TP1/utils.o differ