diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index f9163b40e6f3594044b71ebcb4aee74d25d94ab4..ce1c62c7c60561be6b5a9bc9f115e8966e9e5a4a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="GradleMigrationSettings" migrationVersion="1" />
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 0afd27d06c38c5fa0f5c9616a0dad0eb83f2c910..5d8b06f86cd10aba0a48e10650fda278ba7591d6 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ExternalStorageConfigurationManager" enabled="true" />
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_20" project-jdk-name="20" project-jdk-type="JavaSDK" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_20" default="true" project-jdk-name="20" project-jdk-type="JavaSDK" />
 </project>
\ No newline at end of file
diff --git a/src/main/java/fr/univamu/sorting/App.java b/src/main/java/fr/univamu/sorting/App.java
index 40c78d1a84da56424b6fdf4133993096f2f16161..0fba9c5738f2d16ec46ca04c5932907fa14fc447 100644
--- a/src/main/java/fr/univamu/sorting/App.java
+++ b/src/main/java/fr/univamu/sorting/App.java
@@ -6,7 +6,17 @@ import java.util.stream.Collectors;
 public class App {
 
   public static void main(String[] args) {
-    List<Integer> shuffled = IntLists.shuffledRange(0,1000);
+
+    List<Integer> shuffled = IntLists.shuffledRange(0,10);
+    Sortable<Integer> a = new SortableIntList<>(shuffled);
+ //   CountingSortable<Integer> Shuffled = new CountingSortable<>(a);
+    //CountingSortable<Integer> toSort = new CountingSortable<>(Shuffled);
+    Sorter Sort = new QuickSort<Integer>(a);
+    Sort.sort();
+    System.out.println(Sort);
+
+
+
     System.out.println(
         shuffled.stream()
         .map(String::valueOf)
diff --git a/src/main/java/fr/univamu/sorting/CountingSortable.java b/src/main/java/fr/univamu/sorting/CountingSortable.java
index 43bf9d2424c4605b2c08a820149729d28e4b846a..c8eea0e474a37812641b242d3e118d37df15ddc3 100644
--- a/src/main/java/fr/univamu/sorting/CountingSortable.java
+++ b/src/main/java/fr/univamu/sorting/CountingSortable.java
@@ -2,45 +2,52 @@ package fr.univamu.sorting;
 
 import java.util.List;
 
-public class CountingSortable<T extends Comparable<T>> extends SortableDecorator<T> {
+public class CountingSortable<T extends Comparable<T>> /* extends SortableDecorator<T> */ implements Sortable<T>{
+    private Sortable<T> sortable;
 
-    private  Sortable<T> values;
-    public static int countingSwaps = 0;
-    public static int countingCompare = 0;
+    @Override
+    public void swap(int index1, int index2) {
 
-    public CountingSortable( Sortable<T> values) {
-        super(values);
     }
 
-
-    public int size(){
-        return super.size();
+    @Override
+    public int compare(int index1, int index2) {
+        return 0;
     }
 
-    public T get(int index){
-       return super.get(index);
+    @Override
+    public int size() {
+        return 0;
     }
 
+    @Override
+    public T get(int index) {
+        return null;
+    }
 
-    public void swap (int index1, int index2){
-        countingSwaps++;
-        super.swap(index1,index2);
+    @Override
+    public void set(int index, T value) {
 
     }
 
-    public int compare (int index1, int index2){
-        countingCompare ++;
-        return super.compare(index1,index2);
+    public int countingSwaps = 0;
+    public int countingCompare = 0;
 
+    public CountingSortable(Sortable<T> values) {
+        this.sortable = values;
     }
 
 
-    public void set(int index, T value) {
-        super.set(index, value);
+
+    public void swapAction (int index1, int index2){
+        countingSwaps++;
+        sortable.swap(index1,index2);
+
     }
 
-    public List<T> getSortableParameter() {
-        return super.getSortableParameter();
+    public void compareAction(int index1, int index2){
+        countingCompare ++;
+        sortable.compare(index1, index2);
     }
 
     public int getCountingCompare() {
diff --git a/src/main/java/fr/univamu/sorting/InsertionSort.java b/src/main/java/fr/univamu/sorting/InsertionSort.java
index 669138f120b627c932e29c0c910d8519526358b3..e33bf0ecfb34cbe1bed39222cf64df37efdafefe 100644
--- a/src/main/java/fr/univamu/sorting/InsertionSort.java
+++ b/src/main/java/fr/univamu/sorting/InsertionSort.java
@@ -1,6 +1,6 @@
 package fr.univamu.sorting;
 
-public class InsertionSort<T extends Comparable<T>> implements Sorter<T>{
+public class InsertionSort<T extends Comparable<T>> implements Sorter{
     private final Sortable<T> sortable;
     public InsertionSort( Sortable<T> sortable){
         this.sortable = sortable;
@@ -22,8 +22,5 @@ public class InsertionSort<T extends Comparable<T>> implements Sorter<T>{
     }
 
 
-    public Sortable<T> getSortable (){
-        return sortable;
-    }
 
 }
diff --git a/src/main/java/fr/univamu/sorting/LoggingSortable.java b/src/main/java/fr/univamu/sorting/LoggingSortable.java
index 6c9f91247a9e620d8cd0ebb92f09ebbdf6e6a368..133d21e33856936298f16b2a2e9a5bc2ad7417d0 100644
--- a/src/main/java/fr/univamu/sorting/LoggingSortable.java
+++ b/src/main/java/fr/univamu/sorting/LoggingSortable.java
@@ -5,7 +5,7 @@ import java.util.List;
 
 public class LoggingSortable<T extends Comparable<T>> extends SortableDecorator<T> {
 
-    private Sortable<T> values;
+
     private PrintStream logStream;
 
     public LoggingSortable (Sortable<T> values){
@@ -14,37 +14,16 @@ public class LoggingSortable<T extends Comparable<T>> extends SortableDecorator<
 
 
     @Override
-    public void swap(int index1, int index2) {
-        super.swap(index1, index2);
+    public void swapAction(int index1, int index2) {
         logStream.println("swap : "+index1+" et "+index2);
     }
 
     @Override
-    public int compare(int index1, int index2) {
+    public void compareAction (int index1, int index2) {
         logStream.println("Compare : "+index1+" et "+index2);
-        return super.compare(index1,index2);
-
-    }
-
-    @Override
-    public int size() {
-        return super.size();
-    }
 
-    @Override
-    public T get(int index) {
-        return super.get(index);
-    }
-
-    @Override
-    public void set(int index, T value) {
-        super.set(index, value);
     }
 
-    @Override
-    public List<T> getSortableParameter() {
-        return super.getSortableParameter();
-    }
 
     public PrintStream getLogStream() {
         return logStream;
diff --git a/src/main/java/fr/univamu/sorting/QuickSort.java b/src/main/java/fr/univamu/sorting/QuickSort.java
index d3d66e9de8b5fe3e1dbb672d6c5bb10841bfa8c9..ff2807df756ddc7d2e2b8be4c6ba837c655ec7a3 100644
--- a/src/main/java/fr/univamu/sorting/QuickSort.java
+++ b/src/main/java/fr/univamu/sorting/QuickSort.java
@@ -2,49 +2,43 @@ package fr.univamu.sorting;
 
 
 
-public class QuickSort<T extends Comparable<T>> implements Sorter<T> {
+public class QuickSort<T extends Comparable<T>> implements Sorter {
     private final Sortable<T> sortable;
 
     public QuickSort(Sortable<T> sortable) {
         this.sortable = sortable;
     }
 
-    private int partition(int start , int end) {
+    private void partition(int start , int end) {
         //T pivot = sortable.get(end);
-        int i = start - 1;
-
-        for (int j = start; j < end; j++) {
-            int bool = sortable.compare(j,end);
-            if (bool <= 0){
+        if (end <= start) {
+            return;
+        }
+        int i = start + 1;
+        int j = end;
+        while (i < j) {
+            while (i <= j && sortable.compare(start,i) > 0) {
                 i++;
-                sortable.swap(i, j);
             }
+            while (i <= j && sortable.compare(start,j) < 0) {
+                j--;
+            }
+            if (i >= j) { break; }
+            sortable.swap(i,j);
+            i++;
+            j--;
         }
-
-        sortable.swap(i + 1, end);
-        return i + 1;
+        sortable.swap(start,i-1);
+        partition(start,i-1);
+        partition(i+1,end);
     }
 
 
     public void sort() {
-        if (sortable == null || sortable.size() <= 1) {
-            return;
-        }
-        sort(0, sortable.size() - 1);
+      partition(0, sortable.size()-1);
     }
 
-    private void sort(int start, int end) {
-        if (start < end) {
-            int pivotIndex = partition(start, end);
-            sort(start, pivotIndex - 1);
-            sort(pivotIndex + 1, end);
-        }
-    }
 
 
-    public Sortable<T> getSortable (){
-        return sortable;
-    }
-
 
 }
diff --git a/src/main/java/fr/univamu/sorting/Sortable.java b/src/main/java/fr/univamu/sorting/Sortable.java
index 2049048c164d3ba5ccbb2ea23599efa89a36df7b..3c36e1349d5e65ea28bebb93249915822ba71713 100644
--- a/src/main/java/fr/univamu/sorting/Sortable.java
+++ b/src/main/java/fr/univamu/sorting/Sortable.java
@@ -13,7 +13,6 @@ public interface Sortable<T extends Comparable<T>> {
 
     void  set(int index,T value);
 
-    List<T> getSortableParameter();
 
 
 }
diff --git a/src/main/java/fr/univamu/sorting/SortableDecorator.java b/src/main/java/fr/univamu/sorting/SortableDecorator.java
index 3709e8d497b1be43f8776fc8b7f9b3ba6b429202..b7c22c1b4cec5e72f84af6e380d89c1a9ed7eae6 100644
--- a/src/main/java/fr/univamu/sorting/SortableDecorator.java
+++ b/src/main/java/fr/univamu/sorting/SortableDecorator.java
@@ -24,19 +24,18 @@ public abstract class SortableDecorator<T extends Comparable<T>> implements Sort
         values.set(index,value);
     }
 
-    @Override
-    public List<T> getSortableParameter() {
-        return values.getSortableParameter();
-    }
-
     @Override
     public int compare(int index1, int index2) {
+        this.compareAction(index1,index2);
         return values.compare(index1,index1);
     }
 
+    protected abstract void compareAction(int index1, int index2);
+
     @Override
     public void swap(int index1, int index2) {
         values.swap(index1,index2);
     }
+    protected abstract void swapAction (int index1, int index2);
 }
 
diff --git a/src/main/java/fr/univamu/sorting/SortableIntArray.java b/src/main/java/fr/univamu/sorting/SortableIntArray.java
index 997b47014329810cf82326b4fb04f8f17708ab14..1aa6f3b91c7b2ee2abade666857e655daff59bb2 100644
--- a/src/main/java/fr/univamu/sorting/SortableIntArray.java
+++ b/src/main/java/fr/univamu/sorting/SortableIntArray.java
@@ -43,11 +43,6 @@ public class SortableIntArray<T extends Comparable<T>> implements Sortable <T>{
         return array[index];
     }
 
-    //// a voir avec le prof
-    @Override
-    public List<T> getSortableParameter() {
-        return Arrays.asList(array);
-    }
 
     @Override
     public void set(int index, T value) {
diff --git a/src/main/java/fr/univamu/sorting/SortableIntList.java b/src/main/java/fr/univamu/sorting/SortableIntList.java
index 6823139a58666d0fd3e6b6ab866d35c5954b0852..601d14934c11173afedfdee61a85897fec598a98 100644
--- a/src/main/java/fr/univamu/sorting/SortableIntList.java
+++ b/src/main/java/fr/univamu/sorting/SortableIntList.java
@@ -37,9 +37,6 @@ public class SortableIntList <T extends Comparable<T>> implements Sortable<T> {
         //return compare(index1,index2);
     }*/
 
-    public List<T> getSortableParameter() {
-        return list;
-    }
 
     @Override
     public void set(int index, T value) {
diff --git a/src/main/java/fr/univamu/sorting/Sorter.java b/src/main/java/fr/univamu/sorting/Sorter.java
index 2249803d48aaeb845b825cf8864a1083782766d2..9aa0b7ef80224177caa7083bb50c23acbf363b28 100644
--- a/src/main/java/fr/univamu/sorting/Sorter.java
+++ b/src/main/java/fr/univamu/sorting/Sorter.java
@@ -1,7 +1,7 @@
 package fr.univamu.sorting;
 
-public interface Sorter<T extends Comparable<T>> {
+public interface Sorter {
 
     void sort();
-    Sortable<T> getSortable();
+
 }
diff --git a/src/test/java/fr/univamu/sorting/ListSortTest.java b/src/test/java/fr/univamu/sorting/ListSortTest.java
index 0591e40b7709a4d98a1eeaf6ddb920838c21dfbf..13aa056b10fb78ce907b82a10b078a0d479bdc06 100644
--- a/src/test/java/fr/univamu/sorting/ListSortTest.java
+++ b/src/test/java/fr/univamu/sorting/ListSortTest.java
@@ -11,43 +11,7 @@ class ListSortTest {
 
 
   @Test
-  void testQuickSort() {
-    List<Integer> values = new ArrayList<>(List.of(2,0,28,15,88,1,61));
-    System.out.println(values);
-    // List<Integer> values = IntLists.shuffledRange(1,100);
-    Sortable<Integer> sortableValues = new SortableIntList<>(values);
-    //CountingSortable<Integer> countingSortable = new CountingSortable<>(sortableValues);
-    CountingSortable<Integer> countingSortable = new CountingSortable<>(sortableValues);
-    LoggingSortable<Integer> loggingSortable = new LoggingSortable<>(sortableValues);
-    QuickSort<Integer> sorter = new QuickSort<Integer>(countingSortable);
-    sorter.sort();
-
-    Sortable<Integer> sorterSortableValues = sorter.getSortable();
-
-    //List<Integer> sortedList = IntStream.rangeClosed(1,100).boxed().toList();
-
-    System.out.println(sorterSortableValues.getSortableParameter());
-    System.out.println("nombreSwaps: "+countingSortable.getCountingSwaps());
-    System.out.println("nombreCompare: "+countingSortable.getCountingCompare());
-    System.out.println(loggingSortable.getLogStream());
+  void testSort() {
 
   }
-
-@Test
-  void testInsertionSort() {
-    List<Integer> values = new ArrayList<>(List.of(2,0,28,15,88,1,61));
-    System.out.println(values);
-    // List<Integer> values = IntLists.shuffledRange(1,100);
-    Sortable<Integer> sortableValues = new SortableIntList<>(values);
-    InsertionSort<Integer> sorter = new InsertionSort<>(sortableValues);
-    sorter.sort();
-
-    Sortable<Integer> sorterSortableValues = sorter.getSortable();
-
-    //List<Integer> sortedList = IntStream.rangeClosed(1,100).boxed().toList();
-
-    System.out.println(sorterSortableValues.getSortableParameter());
-
-  }
-
 }
\ No newline at end of file