From c3215923e50b4b2ce6d308a8ce80b147ae817bc3 Mon Sep 17 00:00:00 2001 From: Mickael Da Silva <mickael.dasilva@unistra.fr> Date: Fri, 31 Jan 2020 14:05:11 +0100 Subject: [PATCH] Tri Rapide --- Algos_1/algos.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Algos_1/algos.c b/Algos_1/algos.c index f5cbd3d..51713cf 100644 --- a/Algos_1/algos.c +++ b/Algos_1/algos.c @@ -55,4 +55,34 @@ void fusion(long * A, size_t p, size_t q, size_t r){ void triFusion(long * A, size_t n){ sousTriFusion(A, 0, 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); + } +} + +void partition(long* A, size_t p, size_t r) { + size_t pivot = A[r-1]; + size_t i = p; + long temp; + for (size_t j = p; j < r-2; j++) { + if (A[j] <= pivot) { + temp = A[i]; + A[i] = A[j]; + A[j] = temp; + i++; + } + } + temp = A[i]; + A[i] = A[r-1]; + A[r-1] = temp; + return i; +} + +void triRapide(long* A, size_t n) { + sousTriRapide(A, 0, n); } \ No newline at end of file -- GitLab