From 96099570d15def75b01234e918c2d1c0dd02af10 Mon Sep 17 00:00:00 2001 From: f20021643 <alexandre.fournel@etu.univ-amu.fr> Date: Fri, 9 Dec 2022 17:00:50 +0100 Subject: [PATCH] question 7 --- src/main/java/fr/univamu/sorting/Sort.java | 18 ++++++---- .../java/fr/univamu/sorting/Sortable.java | 36 ++----------------- .../fr/univamu/sorting/SortableIntArray.java | 20 ++++++----- .../fr/univamu/sorting/SortableIntList.java | 32 ++++++++--------- .../java/fr/univamu/sorting/ListSortTest.java | 9 ++++- 5 files changed, 48 insertions(+), 67 deletions(-) diff --git a/src/main/java/fr/univamu/sorting/Sort.java b/src/main/java/fr/univamu/sorting/Sort.java index 8d4e21c..31d5f27 100644 --- a/src/main/java/fr/univamu/sorting/Sort.java +++ b/src/main/java/fr/univamu/sorting/Sort.java @@ -3,19 +3,23 @@ package fr.univamu.sorting; import java.util.List; public class Sort { - public Sortable sortable; - public List<Integer> IntList; - public int[] IntTab; + public Sortable values; + + public Sort (Sortable values){ + this.values=values; + } public void sort() { - for (int i = 0; i < this.size() - 1; i++) { - for (int j = i + 1; j < this.size(); j++) { - if (compare(j,i) < 0) { - swap(i,j); + for (int i = 0; i < values.size() - 1; i++) { + int mini = i; + for (int j = i + 1; j < values.size(); j++) { + if (values.compare(j,mini) < 0) { + mini = j; } } + values.swap(mini,i); } } } diff --git a/src/main/java/fr/univamu/sorting/Sortable.java b/src/main/java/fr/univamu/sorting/Sortable.java index 8f0b574..9f13295 100644 --- a/src/main/java/fr/univamu/sorting/Sortable.java +++ b/src/main/java/fr/univamu/sorting/Sortable.java @@ -1,37 +1,7 @@ package fr.univamu.sorting; public interface Sortable { - public void swap(int index1, int index2) { - int value1 = IntTab[index1]; - int value2 = IntTab[index2]; - IntTab[index1] = value2; - IntTab[index2] = value1; - - } - - public int compare(int index1, int index2) { - return IntTab[index1] - (IntTab[index2]; - } - - public int size() { - return IntTab.length; - } - public void swap(int index1, int index2) { - int value1 = IntList.get(index1); - int value2 = IntList.get(index2); - IntList.set(index1, value1); - IntList.set(index2, value2); - } - - public int compare(int index1, int index2) { - return IntList.get(index1).compareTo(IntList.get(index2)); - } - - public int size() { - return IntList.size(); - } - - public int get(int index) { - return IntList.get(index); - } + public int size(); + public void swap(int index1, int index2); + public int compare(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 aaa80ba..289169b 100644 --- a/src/main/java/fr/univamu/sorting/SortableIntArray.java +++ b/src/main/java/fr/univamu/sorting/SortableIntArray.java @@ -1,19 +1,23 @@ package fr.univamu.sorting; -public class SortableIntArray { - public int[] IntTab; +public class SortableIntArray implements Sortable{ + private final int[] values; + + public SortableIntArray (int[] values){ + this.values= values; + } public void swap(int index1, int index2) { - int value1 = IntTab[index1]; - int value2 = IntTab[index2]; - IntTab[index1] = value2; - IntTab[index2] = value1; + int value1 = values[index1]; + int value2 = values[index2]; + values[index1] = value2; + values[index2] = value1; } public int compare(int index1, int index2) { - return IntTab[index1] - (IntTab[index2]; + return values[index1] - (values[index2]); } public int size() { - return IntTab.length; + return values.length; } } diff --git a/src/main/java/fr/univamu/sorting/SortableIntList.java b/src/main/java/fr/univamu/sorting/SortableIntList.java index 042c4d5..13d8058 100644 --- a/src/main/java/fr/univamu/sorting/SortableIntList.java +++ b/src/main/java/fr/univamu/sorting/SortableIntList.java @@ -1,34 +1,30 @@ package fr.univamu.sorting; import java.util.*; -public class SortableIntList { - public List<Integer> IntList; +public class SortableIntList implements Sortable{ + private final List<Integer> values; + + public SortableIntList(List<Integer> values) { + this.values = values; + } public void swap(int index1, int index2) { - int value1 = IntList.get(index1); - int value2 = IntList.get(index2); - IntList.set(index1, value1); - IntList.set(index2, value2); + int value1 = values.get(index1); + int value2 = values.get(index2); + values.set(index1, value2); + values.set(index2, value1); } public int compare(int index1, int index2) { - return IntList.get(index1).compareTo(IntList.get(index2)); + return values.get(index1).compareTo(values.get(index2)); } public int size() { - return IntList.size(); + return values.size(); } public int get(int index) { - return IntList.get(index); - } - public void sort() { - for (int i = 0; i < IntList.size() - 1; i++) { - for (int j = i + 1; j < IntList.size(); j++) { - if (compare(j,i) < 0) { - swap(i,j); - } - } - } + return values.get(index); } + } \ No newline at end of file diff --git a/src/test/java/fr/univamu/sorting/ListSortTest.java b/src/test/java/fr/univamu/sorting/ListSortTest.java index 76a1d00..927327b 100644 --- a/src/test/java/fr/univamu/sorting/ListSortTest.java +++ b/src/test/java/fr/univamu/sorting/ListSortTest.java @@ -12,7 +12,14 @@ class ListSortTest { @Test void testSort() { - assertThat(shuffledRange(1,8).sort()).isEqualTo(range(1,8)); + + List<Integer> values = IntLists.shuffledRange(1,9); + Sortable sortableValues = new SortableIntList(values); + Sort sorter = new Sort(sortableValues); + sorter.sort(); + assertThat(values).isEqualTo(range(1,9)); + } + } \ No newline at end of file -- GitLab