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