From ec3d6a784759c807344e51d6bae806f89b240088 Mon Sep 17 00:00:00 2001 From: lq Date: Tue, 28 Aug 2018 22:42:03 +0800 Subject: [PATCH 1/3] add Test for InsertionSort --- src/main/com/java/sorts/InsertionSort.java | 29 +++++++++++++++++++ .../com/java/sorts/InsertionSortTest.java | 27 +++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/main/com/java/sorts/InsertionSort.java create mode 100644 src/test/com/java/sorts/InsertionSortTest.java diff --git a/src/main/com/java/sorts/InsertionSort.java b/src/main/com/java/sorts/InsertionSort.java new file mode 100644 index 000000000000..18e9351b027e --- /dev/null +++ b/src/main/com/java/sorts/InsertionSort.java @@ -0,0 +1,29 @@ +package src.main.com.java.sorts; + +import static src.main.com.java.sorts.SortUtils.less; + +public class InsertionSort { + + /** + * This method implements the Generic Insertion Sort + * Sorts the array in increasing order + * + * @param array The array to be sorted + **/ + public > T[] sort(T[] array) { + for (int j = 1; j < array.length; j++) { + + // Picking up the key(Card) + T key = array[j]; + int i = j - 1; + + while (i >= 0 && less(key, array[i])) { + array[i + 1] = array[i]; + i--; + } + // Placing the key (Card) at its correct position in the sorted subarray + array[i + 1] = key; + } + return array; + } +} diff --git a/src/test/com/java/sorts/InsertionSortTest.java b/src/test/com/java/sorts/InsertionSortTest.java new file mode 100644 index 000000000000..23539d0bc124 --- /dev/null +++ b/src/test/com/java/sorts/InsertionSortTest.java @@ -0,0 +1,27 @@ +package src.test.com.java.sorts; + + +import org.junit.Assert; +import org.junit.Test; +import src.main.com.java.sorts.InsertionSort; + +import java.util.Arrays; + +public class InsertionSortTest { + + @Test + public void insertionSortTest() { + InsertionSort insertionSort = new InsertionSort(); + Integer[] unsortedInt = new Integer[]{0, 5, 9, 2, 1, 3, 4, 8, 6, 7}; + Integer[] sortedInt = new Integer[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + System.out.println(Arrays.toString(insertionSort.sort(unsortedInt))); + + Assert.assertArrayEquals(sortedInt, insertionSort.sort(unsortedInt)); + + Character[] unsortedChar = new Character[]{'f', 'h', 'c', 'a', 'b', 'd', 'g', 'e'}; + Character[] sortedChar = new Character[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}; + System.out.println(Arrays.toString(insertionSort.sort(unsortedChar))); + + Assert.assertArrayEquals(sortedChar, insertionSort.sort(unsortedChar)); + } +} From 4aba367c3133354f932ec983a49bac99c8a7c9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=92=B1?= Date: Wed, 29 Aug 2018 09:15:50 +0800 Subject: [PATCH 2/3] update project structure --- .../com}/conversions/AnyBaseToDecimal.java | 2 +- .../com}/conversions/DecimalToAnyBase.java | 2 +- .../com}/search/BinarySearch.java | 2 +- .../java => java/com}/sorts/BubbleSort.java | 9 +++------ .../java => java/com}/sorts/HeapSort.java | 19 ++++++++----------- .../com}/sorts/InsertionSort.java | 6 ++---- .../java => java/com}/sorts/QuickSort.java | 11 ++++------- .../com}/sorts/SelectionSort.java | 9 +++------ .../java => java/com}/sorts/ShellSort.java | 9 +++------ .../java => java/com}/sorts/SortUtils.java | 2 +- .../conversions/AnyBaseToDecimalTest.java | 4 ++-- .../conversions/DecimalToAnyBaseTest.java | 4 ++-- .../com}/search/BinarySearchTest.java | 4 ++-- .../com}/sorts/BubbleSortTest.java | 4 ++-- .../java => java/com}/sorts/HeapSortTest.java | 4 ++-- .../com}/sorts/InsertionSortTest.java | 4 ++-- .../com}/sorts/QuickSortTest.java | 4 ++-- .../com}/sorts/SelectionSortTest.java | 4 ++-- .../com}/sorts/ShellSortTest.java | 4 ++-- 19 files changed, 45 insertions(+), 62 deletions(-) rename src/main/{com/java => java/com}/conversions/AnyBaseToDecimal.java (96%) rename src/main/{com/java => java/com}/conversions/DecimalToAnyBase.java (96%) rename src/main/{com/java => java/com}/search/BinarySearch.java (97%) rename src/main/{com/java => java/com}/sorts/BubbleSort.java (65%) rename src/main/{com/java => java/com}/sorts/HeapSort.java (85%) rename src/main/{com/java => java/com}/sorts/InsertionSort.java (80%) rename src/main/{com/java => java/com}/sorts/QuickSort.java (83%) rename src/main/{com/java => java/com}/sorts/SelectionSort.java (72%) rename src/main/{com/java => java/com}/sorts/ShellSort.java (62%) rename src/main/{com/java => java/com}/sorts/SortUtils.java (97%) rename src/test/{com/java => java/com}/conversions/AnyBaseToDecimalTest.java (95%) rename src/test/{com/java => java/com}/conversions/DecimalToAnyBaseTest.java (81%) rename src/test/{com/java => java/com}/search/BinarySearchTest.java (91%) rename src/test/{com/java => java/com}/sorts/BubbleSortTest.java (91%) rename src/test/{com/java => java/com}/sorts/HeapSortTest.java (91%) rename src/test/{com/java => java/com}/sorts/InsertionSortTest.java (91%) rename src/test/{com/java => java/com}/sorts/QuickSortTest.java (91%) rename src/test/{com/java => java/com}/sorts/SelectionSortTest.java (91%) rename src/test/{com/java => java/com}/sorts/ShellSortTest.java (91%) diff --git a/src/main/com/java/conversions/AnyBaseToDecimal.java b/src/main/java/com/conversions/AnyBaseToDecimal.java similarity index 96% rename from src/main/com/java/conversions/AnyBaseToDecimal.java rename to src/main/java/com/conversions/AnyBaseToDecimal.java index dc78bf84b223..4267e662d456 100644 --- a/src/main/com/java/conversions/AnyBaseToDecimal.java +++ b/src/main/java/com/conversions/AnyBaseToDecimal.java @@ -1,4 +1,4 @@ -package src.main.com.java.conversions; +package src.main.java.com.conversions; public class AnyBaseToDecimal { /** diff --git a/src/main/com/java/conversions/DecimalToAnyBase.java b/src/main/java/com/conversions/DecimalToAnyBase.java similarity index 96% rename from src/main/com/java/conversions/DecimalToAnyBase.java rename to src/main/java/com/conversions/DecimalToAnyBase.java index 7bf9eaf00887..ae675f234bd2 100644 --- a/src/main/com/java/conversions/DecimalToAnyBase.java +++ b/src/main/java/com/conversions/DecimalToAnyBase.java @@ -1,4 +1,4 @@ -package main.com.java.conversions; +package src.main.java.com.conversions; import java.util.ArrayList; diff --git a/src/main/com/java/search/BinarySearch.java b/src/main/java/com/search/BinarySearch.java similarity index 97% rename from src/main/com/java/search/BinarySearch.java rename to src/main/java/com/search/BinarySearch.java index 6026753a2851..20f74337607d 100644 --- a/src/main/com/java/search/BinarySearch.java +++ b/src/main/java/com/search/BinarySearch.java @@ -1,4 +1,4 @@ -package src.main.com.java.search; +package src.main.java.com.search; /** * Binary search is an algorithm which finds the position of a target value within a sorted array diff --git a/src/main/com/java/sorts/BubbleSort.java b/src/main/java/com/sorts/BubbleSort.java similarity index 65% rename from src/main/com/java/sorts/BubbleSort.java rename to src/main/java/com/sorts/BubbleSort.java index 24ff5483a42f..817935516acb 100644 --- a/src/main/com/java/sorts/BubbleSort.java +++ b/src/main/java/com/sorts/BubbleSort.java @@ -1,7 +1,4 @@ -package src.main.com.java.sorts; - -import static src.main.com.java.sorts.SortUtils.less; -import static src.main.com.java.sorts.SortUtils.swap; +package src.main.java.com.sorts; public class BubbleSort { /** @@ -17,8 +14,8 @@ public > T[] sort(T[] array) { do { swap = false; for (int count = 0; count < last - 1; count++) { - if (less(array[count + 1], array[count])) { - swap = swap(array, count, count + 1); + if (SortUtils.less(array[count + 1], array[count])) { + swap = SortUtils.swap(array, count, count + 1); } } last--; diff --git a/src/main/com/java/sorts/HeapSort.java b/src/main/java/com/sorts/HeapSort.java similarity index 85% rename from src/main/com/java/sorts/HeapSort.java rename to src/main/java/com/sorts/HeapSort.java index 267331db8824..4937237d49ca 100644 --- a/src/main/com/java/sorts/HeapSort.java +++ b/src/main/java/com/sorts/HeapSort.java @@ -1,12 +1,9 @@ -package src.main.com.java.sorts; +package src.main.java.com.sorts; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static src.main.com.java.sorts.SortUtils.less; -import static src.main.com.java.sorts.SortUtils.swap; - public class HeapSort { @@ -39,18 +36,18 @@ private void heapSubtree(int rootIndex, int lastChild) { // if has right and left children T left = heap[leftIndex]; T right = heap[rightIndex]; - if (less(left, right) && less(left, root)) { - swap(heap, leftIndex, rootIndex); + if (SortUtils.less(left, right) && SortUtils.less(left, root)) { + SortUtils.swap(heap, leftIndex, rootIndex); heapSubtree(leftIndex, lastChild); - } else if (less(right, root)) { - swap(heap, rightIndex, rootIndex); + } else if (SortUtils.less(right, root)) { + SortUtils.swap(heap, rightIndex, rootIndex); heapSubtree(rightIndex, lastChild); } } else if (leftIndex <= lastChild) { // if no right child, but has left child T left = heap[leftIndex]; - if (less(left, root)) { - swap(heap, leftIndex, rootIndex); + if (SortUtils.less(left, root)) { + SortUtils.swap(heap, leftIndex, rootIndex); heapSubtree(leftIndex, lastChild); } } @@ -83,7 +80,7 @@ private void makeMinHeap(int root) { * @return root of heap */ private T getRoot(int size) { - swap(heap, 0, size); + SortUtils.swap(heap, 0, size); heapSubtree(0, size - 1); // return old root return heap[size]; diff --git a/src/main/com/java/sorts/InsertionSort.java b/src/main/java/com/sorts/InsertionSort.java similarity index 80% rename from src/main/com/java/sorts/InsertionSort.java rename to src/main/java/com/sorts/InsertionSort.java index 18e9351b027e..e7deb8970149 100644 --- a/src/main/com/java/sorts/InsertionSort.java +++ b/src/main/java/com/sorts/InsertionSort.java @@ -1,6 +1,4 @@ -package src.main.com.java.sorts; - -import static src.main.com.java.sorts.SortUtils.less; +package src.main.java.com.sorts; public class InsertionSort { @@ -17,7 +15,7 @@ public > T[] sort(T[] array) { T key = array[j]; int i = j - 1; - while (i >= 0 && less(key, array[i])) { + while (i >= 0 && SortUtils.less(key, array[i])) { array[i + 1] = array[i]; i--; } diff --git a/src/main/com/java/sorts/QuickSort.java b/src/main/java/com/sorts/QuickSort.java similarity index 83% rename from src/main/com/java/sorts/QuickSort.java rename to src/main/java/com/sorts/QuickSort.java index 902e767fcc36..202a3f9f97e0 100644 --- a/src/main/com/java/sorts/QuickSort.java +++ b/src/main/java/com/sorts/QuickSort.java @@ -1,7 +1,4 @@ -package src.main.com.java.sorts; - -import static src.main.com.java.sorts.SortUtils.less; -import static src.main.com.java.sorts.SortUtils.swap; +package src.main.java.com.sorts; public class QuickSort { @@ -48,14 +45,14 @@ private static > int partition(T[] array, int left, int T pivot = array[mid]; while (left <= right) { - while (less(array[left], pivot)) { + while (SortUtils.less(array[left], pivot)) { ++left; } - while (less(pivot, array[right])) { + while (SortUtils.less(pivot, array[right])) { --right; } if (left <= right) { - swap(array, left, right); + SortUtils.swap(array, left, right); ++left; --right; } diff --git a/src/main/com/java/sorts/SelectionSort.java b/src/main/java/com/sorts/SelectionSort.java similarity index 72% rename from src/main/com/java/sorts/SelectionSort.java rename to src/main/java/com/sorts/SelectionSort.java index 28483e53e347..5dd5699df0ad 100644 --- a/src/main/com/java/sorts/SelectionSort.java +++ b/src/main/java/com/sorts/SelectionSort.java @@ -1,7 +1,4 @@ -package src.main.com.java.sorts; - -import static src.main.com.java.sorts.SortUtils.less; -import static src.main.com.java.sorts.SortUtils.swap; +package src.main.java.com.sorts; public class SelectionSort { @@ -17,13 +14,13 @@ public > T[] sort(T[] arr) { // Initial index of min int min = i; for (int j = i + 1; j < n; j++) { - if (less(arr[j], arr[min])) { + if (SortUtils.less(arr[j], arr[min])) { min = j; } } // Swapping if index of min is changed if (min != i) { - swap(arr, i, min); + SortUtils.swap(arr, i, min); } } diff --git a/src/main/com/java/sorts/ShellSort.java b/src/main/java/com/sorts/ShellSort.java similarity index 62% rename from src/main/com/java/sorts/ShellSort.java rename to src/main/java/com/sorts/ShellSort.java index 3767984cd754..e276f362d5a0 100644 --- a/src/main/com/java/sorts/ShellSort.java +++ b/src/main/java/com/sorts/ShellSort.java @@ -1,7 +1,4 @@ -package src.main.com.java.sorts; - -import static src.main.com.java.sorts.SortUtils.less; -import static src.main.com.java.sorts.SortUtils.swap; +package src.main.java.com.sorts; public class ShellSort { @@ -20,8 +17,8 @@ public > T[] sort(T[] array) { while (n >= 1) { for (int i = n; i < length; i++) { - for (int j = i; j >= n && less(array[j], array[j - n]); j -= n) { - swap(array, j, j - n); + for (int j = i; j >= n && SortUtils.less(array[j], array[j - n]); j -= n) { + SortUtils.swap(array, j, j - n); } } n /= 3; diff --git a/src/main/com/java/sorts/SortUtils.java b/src/main/java/com/sorts/SortUtils.java similarity index 97% rename from src/main/com/java/sorts/SortUtils.java rename to src/main/java/com/sorts/SortUtils.java index 73c569402999..26fc683e724a 100644 --- a/src/main/com/java/sorts/SortUtils.java +++ b/src/main/java/com/sorts/SortUtils.java @@ -1,4 +1,4 @@ -package src.main.com.java.sorts; +package src.main.java.com.sorts; final class SortUtils { diff --git a/src/test/com/java/conversions/AnyBaseToDecimalTest.java b/src/test/java/com/conversions/AnyBaseToDecimalTest.java similarity index 95% rename from src/test/com/java/conversions/AnyBaseToDecimalTest.java rename to src/test/java/com/conversions/AnyBaseToDecimalTest.java index 54d98fc3c7e5..2659234ba7b6 100644 --- a/src/test/com/java/conversions/AnyBaseToDecimalTest.java +++ b/src/test/java/com/conversions/AnyBaseToDecimalTest.java @@ -1,8 +1,8 @@ -package src.test.com.java.conversions; +package src.test.java.com.conversions; import org.junit.Assert; import org.junit.Test; -import src.main.com.java.conversions.AnyBaseToDecimal; +import src.main.java.com.conversions.AnyBaseToDecimal; public class AnyBaseToDecimalTest { diff --git a/src/test/com/java/conversions/DecimalToAnyBaseTest.java b/src/test/java/com/conversions/DecimalToAnyBaseTest.java similarity index 81% rename from src/test/com/java/conversions/DecimalToAnyBaseTest.java rename to src/test/java/com/conversions/DecimalToAnyBaseTest.java index da1d0fe696a1..f6166a6d79bd 100644 --- a/src/test/com/java/conversions/DecimalToAnyBaseTest.java +++ b/src/test/java/com/conversions/DecimalToAnyBaseTest.java @@ -1,6 +1,6 @@ -package test.com.java.conversions; +package src.test.java.com.conversions; -import main.com.java.conversions.DecimalToAnyBase; +import src.main.java.com.conversions.DecimalToAnyBase; import org.junit.Test; import static junit.framework.Assert.assertEquals; diff --git a/src/test/com/java/search/BinarySearchTest.java b/src/test/java/com/search/BinarySearchTest.java similarity index 91% rename from src/test/com/java/search/BinarySearchTest.java rename to src/test/java/com/search/BinarySearchTest.java index 05c05eae06d5..83b2b9788b48 100644 --- a/src/test/com/java/search/BinarySearchTest.java +++ b/src/test/java/com/search/BinarySearchTest.java @@ -1,8 +1,8 @@ -package src.test.com.java.search; +package src.test.java.com.search; import org.junit.Assert; import org.junit.Test; -import src.main.com.java.search.BinarySearch; +import src.main.java.com.search.BinarySearch; public class BinarySearchTest { diff --git a/src/test/com/java/sorts/BubbleSortTest.java b/src/test/java/com/sorts/BubbleSortTest.java similarity index 91% rename from src/test/com/java/sorts/BubbleSortTest.java rename to src/test/java/com/sorts/BubbleSortTest.java index 42a1216982c2..d30e58f22f34 100644 --- a/src/test/com/java/sorts/BubbleSortTest.java +++ b/src/test/java/com/sorts/BubbleSortTest.java @@ -1,9 +1,9 @@ -package src.test.com.java.sorts; +package src.test.java.com.sorts; import org.junit.Assert; import org.junit.Test; -import src.main.com.java.sorts.BubbleSort; +import src.main.java.com.sorts.BubbleSort; import java.util.Arrays; diff --git a/src/test/com/java/sorts/HeapSortTest.java b/src/test/java/com/sorts/HeapSortTest.java similarity index 91% rename from src/test/com/java/sorts/HeapSortTest.java rename to src/test/java/com/sorts/HeapSortTest.java index a110579e931a..6044efbe84d8 100644 --- a/src/test/com/java/sorts/HeapSortTest.java +++ b/src/test/java/com/sorts/HeapSortTest.java @@ -1,9 +1,9 @@ -package src.test.com.java.sorts; +package src.test.java.com.sorts; import org.junit.Assert; import org.junit.Test; -import src.main.com.java.sorts.HeapSort; +import src.main.java.com.sorts.HeapSort; import java.util.Arrays; diff --git a/src/test/com/java/sorts/InsertionSortTest.java b/src/test/java/com/sorts/InsertionSortTest.java similarity index 91% rename from src/test/com/java/sorts/InsertionSortTest.java rename to src/test/java/com/sorts/InsertionSortTest.java index 23539d0bc124..e579c664a42e 100644 --- a/src/test/com/java/sorts/InsertionSortTest.java +++ b/src/test/java/com/sorts/InsertionSortTest.java @@ -1,9 +1,9 @@ -package src.test.com.java.sorts; +package src.test.java.com.sorts; import org.junit.Assert; import org.junit.Test; -import src.main.com.java.sorts.InsertionSort; +import src.main.java.com.sorts.InsertionSort; import java.util.Arrays; diff --git a/src/test/com/java/sorts/QuickSortTest.java b/src/test/java/com/sorts/QuickSortTest.java similarity index 91% rename from src/test/com/java/sorts/QuickSortTest.java rename to src/test/java/com/sorts/QuickSortTest.java index 6eb21c23af34..c61b924c8919 100644 --- a/src/test/com/java/sorts/QuickSortTest.java +++ b/src/test/java/com/sorts/QuickSortTest.java @@ -1,9 +1,9 @@ -package src.test.com.java.sorts; +package src.test.java.com.sorts; import org.junit.Assert; import org.junit.Test; -import src.main.com.java.sorts.QuickSort; +import src.main.java.com.sorts.QuickSort; import java.util.Arrays; diff --git a/src/test/com/java/sorts/SelectionSortTest.java b/src/test/java/com/sorts/SelectionSortTest.java similarity index 91% rename from src/test/com/java/sorts/SelectionSortTest.java rename to src/test/java/com/sorts/SelectionSortTest.java index 622c6bd8c331..7bfbe638a3e1 100644 --- a/src/test/com/java/sorts/SelectionSortTest.java +++ b/src/test/java/com/sorts/SelectionSortTest.java @@ -1,8 +1,8 @@ -package src.test.com.java.sorts; +package src.test.java.com.sorts; import org.junit.Assert; import org.junit.Test; -import src.main.com.java.sorts.SelectionSort; +import src.main.java.com.sorts.SelectionSort; import java.util.Arrays; diff --git a/src/test/com/java/sorts/ShellSortTest.java b/src/test/java/com/sorts/ShellSortTest.java similarity index 91% rename from src/test/com/java/sorts/ShellSortTest.java rename to src/test/java/com/sorts/ShellSortTest.java index b6c28f2bdd3f..e057e3466b8d 100644 --- a/src/test/com/java/sorts/ShellSortTest.java +++ b/src/test/java/com/sorts/ShellSortTest.java @@ -1,8 +1,8 @@ -package src.test.com.java.sorts; +package src.test.java.com.sorts; import org.junit.Assert; import org.junit.Test; -import src.main.com.java.sorts.ShellSort; +import src.main.java.com.sorts.ShellSort; import java.util.Arrays; From ea05c80225af3c85228a239cbb87f234ef8c13e1 Mon Sep 17 00:00:00 2001 From: lq Date: Wed, 29 Aug 2018 23:54:05 +0800 Subject: [PATCH 3/3] Corrected project structure --- bin/.gitignore | 4 ++++ bin/README.md | 22 ++++++++++++++++++ .../com/conversions/AnyBaseToDecimal.class | Bin 0 -> 999 bytes .../com/conversions/DecimalToAnyBase.class | Bin 0 -> 1504 bytes .../main/java/com/search/BinarySearch.class | Bin 0 -> 1165 bytes bin/src/main/java/com/sorts/BubbleSort.class | Bin 0 -> 906 bytes .../main/java/com/sorts/HeapSort$Heap.class | Bin 0 -> 2304 bytes bin/src/main/java/com/sorts/HeapSort.class | Bin 0 -> 1790 bytes .../main/java/com/sorts/InsertionSort.class | Bin 0 -> 941 bytes bin/src/main/java/com/sorts/QuickSort.class | Bin 0 -> 1467 bytes .../main/java/com/sorts/SelectionSort.class | Bin 0 -> 951 bytes bin/src/main/java/com/sorts/ShellSort.class | Bin 0 -> 973 bytes bin/src/main/java/com/sorts/SortUtils.class | Bin 0 -> 1261 bytes .../conversions/AnyBaseToDecimalTest.class | Bin 0 -> 1399 bytes .../conversions/DecimalToAnyBaseTest.class | Bin 0 -> 877 bytes .../java/com/search/BinarySearchTest.class | Bin 0 -> 1193 bytes .../test/java/com/sorts/BubbleSortTest.class | Bin 0 -> 1614 bytes .../test/java/com/sorts/HeapSortTest.class | Bin 0 -> 1600 bytes .../java/com/sorts/InsertionSortTest.class | Bin 0 -> 1635 bytes .../test/java/com/sorts/QuickSortTest.class | Bin 0 -> 1607 bytes .../java/com/sorts/SelectionSortTest.class | Bin 0 -> 1635 bytes .../test/java/com/sorts/ShellSortTest.class | Bin 0 -> 1607 bytes src/main/java/com/sorts/HeapSort.java | 17 ++++++++------ src/main/java/com/sorts/QuickSort.java | 9 ++++--- src/main/java/com/sorts/SelectionSort.java | 7 ++++-- src/main/java/com/sorts/ShellSort.java | 7 ++++-- 26 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 bin/.gitignore create mode 100644 bin/README.md create mode 100644 bin/src/main/java/com/conversions/AnyBaseToDecimal.class create mode 100644 bin/src/main/java/com/conversions/DecimalToAnyBase.class create mode 100644 bin/src/main/java/com/search/BinarySearch.class create mode 100644 bin/src/main/java/com/sorts/BubbleSort.class create mode 100644 bin/src/main/java/com/sorts/HeapSort$Heap.class create mode 100644 bin/src/main/java/com/sorts/HeapSort.class create mode 100644 bin/src/main/java/com/sorts/InsertionSort.class create mode 100644 bin/src/main/java/com/sorts/QuickSort.class create mode 100644 bin/src/main/java/com/sorts/SelectionSort.class create mode 100644 bin/src/main/java/com/sorts/ShellSort.class create mode 100644 bin/src/main/java/com/sorts/SortUtils.class create mode 100644 bin/src/test/java/com/conversions/AnyBaseToDecimalTest.class create mode 100644 bin/src/test/java/com/conversions/DecimalToAnyBaseTest.class create mode 100644 bin/src/test/java/com/search/BinarySearchTest.class create mode 100644 bin/src/test/java/com/sorts/BubbleSortTest.class create mode 100644 bin/src/test/java/com/sorts/HeapSortTest.class create mode 100644 bin/src/test/java/com/sorts/InsertionSortTest.class create mode 100644 bin/src/test/java/com/sorts/QuickSortTest.class create mode 100644 bin/src/test/java/com/sorts/SelectionSortTest.class create mode 100644 bin/src/test/java/com/sorts/ShellSortTest.class diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 000000000000..a19e87bda8eb --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,4 @@ +Java.iml +.idea/* +out/ +Downloads.iml diff --git a/bin/README.md b/bin/README.md new file mode 100644 index 000000000000..48f442aced40 --- /dev/null +++ b/bin/README.md @@ -0,0 +1,22 @@ +# The Algorithms - Java (WORK IN PROGRESS) + +## Goal +Make it a working Java project with full fledged test cases for each algorithm and correct package structures. Once we have enough test coverage, we would merge it with master + +## Contribution Guidelines + - If you add an algorithm then you have to add a test along with it. In absence of a test the PR would not be approved + - Follow the correct coding guidelines with proper description for the methods. Refer [DecimalToAnyBase.java](https://github.com/TheAlgorithms/Java/blob/Development/src/main/com/java/conversions/DecimalToAnyBase.java) for algorithm and [DecimalToAnyBaseTest.java](https://github.com/TheAlgorithms/Java/blob/Development/src/test/com/java/conversions/DecimalToAnyBaseTest.java) for the test coding standards. + - Do not add a main method as we just need the actual algorithm in a method for the class which we are going to test in the test cases + - Please do not add a signature inside the code. The commit history is sufficient enough to determine who has added the code to the repo. + - Make sure the algorithm which is getting added comes under a certain domain of Algorithms. Please don't create a package with name such as Misc, Others etc. + - While making a PR make sure you are commiting the Java files only and not any project specific files. If you feel that your IDE is generating some extra files then either don't add them to git or add the extensions to ```.gitignore``` + - Please don't add solutions to problems from online judge such as Hackerrank, Leetcode etc + +## Steps to raise a PR +- Fork to [Java Repo](https://github.com/TheAlgorithms/Java) +- Open the forked repo on your local machine +- Switch to ```Development``` branch by using the command ```git checkout Development``` +- Add the JAR for JUnit to your build path. Here is a link for the [JUnit JAR](http://www.java2s.com/Code/Jar/j/Downloadjunit410jar.htm) +- Make the changes on your local machine +- Push the changes to the forked repository +- Raise a PR against the Development branch diff --git a/bin/src/main/java/com/conversions/AnyBaseToDecimal.class b/bin/src/main/java/com/conversions/AnyBaseToDecimal.class new file mode 100644 index 0000000000000000000000000000000000000000..aa7ceab839df9b4d9d5616df73a016e7c546bd99 GIT binary patch literal 999 zcmb7CO;Zy=5Pg&V3d<5AunGYb5F`O*qlZ*kASJ}INL7>rDb8#*3t3Edsm+4r-GAYU z^5BI7UXb$O5Afzc@$5l-lTi4<$*rB4?w;xH_ukCcpP#<~DB+=rG-gbUKkRE<2hwe7}%^e=;I z(hNER#cC(^oVFW;&c1u(I$qS~2#@@@6GUOhSqtB+yB)t4J@dVw?Y5Q$vc3J}Dkdg-8gEkEQO%5%y=^jctGD{;M7 zFWiGJ3j+%ReMfF+NfS?>lF4A8cE2av%a zJ)*-6&NBHsiy2%u7SE7cRZ6N_(k9hLNw@WPC@$Li8I*IV6UWepv{PHXir89nr=;52 zM6;y5)h|9=e6!Va=%=iubo(z5AlO5rmnMpS_O{u1hP~%7%*Q{16~@+avx{+qII?(z zA@1oC(Ir}GjWAPE+~C<^^3zbpEm{gIKgB35mGz%sjFyHRPmV&lU^&B(|G1DJF!F=f zZpy2_WM5+~S$8a#EgmD2%RYXOH0{PoF1yyqnmZ@l?9s_^1*S-5ngnM5kaY~Vaff@d NEpJ9DJ4G{v>0k8`z8C-i literal 0 HcmV?d00001 diff --git a/bin/src/main/java/com/conversions/DecimalToAnyBase.class b/bin/src/main/java/com/conversions/DecimalToAnyBase.class new file mode 100644 index 0000000000000000000000000000000000000000..800a541f45abeb26dcb4e157dc97a55dbb2217ef GIT binary patch literal 1504 zcmb7EO>^5+6g^M=kfSPz>n3hg2PiERJ2X-FDv*Rgl2UNvCV)H1lm+EQ7LAH5dt^C7 z_!;aNX4tUkh6QXKpfjDW`5El^3mu@GCpnItVZ%c2-FNSM=bn4+d;0yK-yQ+DhPr_Q z7IfGKG%Of6i$w$DcttH=)$y8|UpJuR4P{+BgEHP!!&^GuR_-M=EURHf$2&S!1+pt% z;6*f2<;spgdZX2F1tx1=;BIxBdv17J?)mf-YAr|lJ2Ldty6;R!`(8(2vDOJ4yD7cE zzAq1??X;Twf&(|~c&(sgUw0j^DgE26wcv1FcHCuwd=ifaK7nGnTCLP#0AB|8?0OV> z!9DKPoPB}mp~%L*45bsfA%iI|XbXrcsqYb5KzA5j3&X*YZshqk9rCc|bs}}76ESKH z0Vb)|yPn^OL5ris9=4AQzM32wgcSrhUTdr0% z$R+4D1&n&D8#?X{PbocpTCN49iHUQV5;zy@Gn(H-1#>3e!{3Fva=Q|j6AzNUD*#p)_hTwdm!H^@*d z_hDn{jx!Tg-&_bW2vQH2x4i>c%Nu_XOGd@Zuwb_3Fw|1TOt%ue4ZJ#^J`Aj8rK z^67oKsFk<`MkyrTWjxPEU*OLGNP%s`6vt_}-G|Wb93iz;`X1K&Txqs_g!C`S^pM>x&H5`3p8oj|`knb6az_|j zO4BfwGFIkSoDujI7nEfRJjVD^)=FF19wv4lJpIE;_b}N*{wJnL$F#0sjP?X_$dlGt z5-H#kso0Eel58C_*dakhdzD3Oa_20bp+%C6sRESsES`&tx{HgnH167^LYJtGjYV9> z3(WT-cdF8p*cHZJqGuZEzmU_RS%0ITL)TG$LJ&>8r9>5c#+AmcR_QxTmhxjiV62p1 x{QR3AOL?P_U!%cbDz0aOGnma_wmk6_?_zRzz}CXcF9n%F1AefZI*re*B4I4H*rUMML(`G2f{ukrQ zB^y^n7yJPKj%$tQ%`~MZm|!yV-u*oHo_pVq-`}qRY@m{afoDnRD5S80)i~DTC<>U{ zp6?BI1hnG%o`AmFYr6uOhUdHQF1m+q(2|E8T4owOM|SpP;3<7%)CVWtxxiZEJaFu; z^nCkNevr1)>)Pk844f0Y=J_%hHbZ4gAaUgR?YiG~KMK4o?l;2lj`WZ1-CnmZ1BJbH zyLG)TV8|elLxH(}WRk_1OMm`$2<7;T#jrnSvfpa4KP@~HP4C#3gNuN?OWUo@&0FEN z8N0K!Q&gG!RDWi~TA=!W-0F3et#{m`fq+m%1Mm2Rve|Xpp7iPCO#1@U&4F~z-pc-H z0hPOU7gb0$dl!M@zV_5cbCbJyp*E3*iFg_h@Gy?`G)gE7tlVj}0@<5YzCS#59X3CE zW4hTc-+-bb1Gm)^u!<9-jq*51Ec2Nfe71lF4gqnVQ`BtUg11q+g7``yh6GPDG^UWG zoQ?vJq6Es*xW_1!e8f0SMU=`Ft$eMwuMoSWu1#Rfh8Rmx+z3NqW{?eW)5u|lc=wr? z=N^|0gB@LVMF5^EIL;R+sOjl(PAIm)P_f>#`wn#voFkk!YG zYGX#V5hLY&g!zzpjX3kHk|o9hC4>4Zo=`F;m@ABkxx!G)7g-|#ZR!^aLgYq+SmJP& I>4@R!AL&Z#`~Uy| literal 0 HcmV?d00001 diff --git a/bin/src/main/java/com/sorts/BubbleSort.class b/bin/src/main/java/com/sorts/BubbleSort.class new file mode 100644 index 0000000000000000000000000000000000000000..0cbe2c43a83b9a36a2263b49de97715fe813c90b GIT binary patch literal 906 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 literal 0 HcmV?d00001 diff --git a/bin/src/main/java/com/sorts/InsertionSort.class b/bin/src/main/java/com/sorts/InsertionSort.class new file mode 100644 index 0000000000000000000000000000000000000000..c977b95007fc1fe415641f82e7df841153418951 GIT binary patch literal 941 zcma)4O-~b16g{tfWuTUi^3jS`uqw2r;wUjhX>CkMOh_s&T3N`(*D}E=?MyQ>n6T$h z7i>Pq8+t%-lb_#a%Tc;2*zkhBSt%)9TNd+vGnotf`{zn%hEM=lPDg*X;*(?Hh1 zErF4;?bty@Aet}i2*^!$&k~rd+K#n-*lAc^T{YT7rmJpKwRe%0%j;EnAIymh2Db?ao9`CimOxB-o+3FtR4jGzGDqG27mC*Fddl4}jMoCyJb13U;cX4v78tA9 z`;H0@Jvy>du5WA%oTtq8N~x09GKHR2yyhNyP3xH*dU?T?d)kQvVi+-SCxIm_3oKpA zP=Tp)7hg15R+HY&oM!#$u-p8OvTgYcW`5wUN`ukDD`XMnf2E%YXg@}{ z8q7>a!5CZl4Dl%}k8;&zuw{&EqDMd+SC|Rr;}p@&KPeewd@7%0il-m&xR_bn&d9xW zIVay^VYN6X*S;X~4l~@z*E+2o%d?ZSA7Q>)JC2Bxvv0+Z)R55UF85Cy#U#&}LK4#) zeFjC$;sMflM6`nWkoAyfCvX=NOcJ^v% f)~<4&g#3+&_=5=p^J4KAiPs26aGiuqxV!NWa8cFN literal 0 HcmV?d00001 diff --git a/bin/src/main/java/com/sorts/QuickSort.class b/bin/src/main/java/com/sorts/QuickSort.class new file mode 100644 index 0000000000000000000000000000000000000000..82e1ecdc97e0b52572630294509a4ad13da8849b GIT binary patch literal 1467 zcma)5OHUI~7(KV0wzd?kSj%Gyi1=uy$Y4Q?ZBt`NG)+)rc$mP(p{+2`cA9CyuxIVw ztuEZS(3QjmTND3)|HFkl#dBvSMUsLn=HBm~``z=M?=j#1d_4p(hq(wsNJS7tS}s}y z8BEIMb_i1;=mNol*)ZEh0e>pJBB0D$m8!tS1+!6ox>H}T+DpcIjY$83RW@oXhHc8T z2P*ANvn4RG(6Y;V-7p*ama%K-Wvi~YEW6#(pYNFE?M0e-QcFl+I<>aoc-4%?hCXlA zn}#hZ^XXG?fq-G##-6~ysUC@w>h_u)g=B|t)i_%Lqx$P+MIg~NF;>9OoI;ouICpq*Mi#9dyIg%_$_eP}G;>P!FNzBYM=^lG zD8_I#gga4WF%!is?h1_mcOnF0$7AqpeXCk#t>VYf@noFACVR8oHftP0R=vedPj#q;nVC1KJme&oq4K;Tm+nAfmLR zt^<0}#}of6#ONg-FO$s2y(i<(94eIq_%fe(^g9$0=PJfXmmHde>*~?)5%GS~UFHin zghb**t`PAd!4PZ=Eg9+!Ln+)7#N1s%$IH3~=&>rPFM(V31 z9mg;x92pvYqReE7h+h&qGHB3JiOFK9NYe8CBTah6c{9S#4>9a%9HlnSji>P!uVmno zntU0k6}6FUPEnKZk<--dka7U!EyDXkd^q|!q-e>k2l$Q%(Cz4llU3jaUG^pTP5nqR zH>0ehU1wjWnPHY4n4!v9<~4^&+#_7$8Y9YYuW6g{uZFqT5Wwga^V6}1+M=_m_g3MHDxMiSHoSd(_+E1lFqm?6WUao<1T z%A^~&y0UT6g-id3e}bgydC+K@v`I<0@4R#GJNM(g`T6_%F@O?s5$MQ7a2+?4xoIG4 z;FdtR;TLRjKw`U8)>yB$bA9QzZzbSV+WM=AKOLn%T@2LGLsReJGzQA(5 z@3*Y3bX=<~-$|?Gb*;YV2YstyckEW+cy5E+GUXL5a6h+GA4PVgyKilH-JbN7Y&m}c zFCg0d*H~uPafuuv>H7kyi%&2vdA8~gy?>SOG@Gm^)(B+l?K9asZD_LL?7K1;`0RM4 z(p+0Rx6BI9R?F3#(#Vg6A`Nfgx9m-4G^;ahuc}U?2*WUNJBmA4isCMo1(q%~HG#zc zQN7r0bDjd(3y*TXF9WB;ThTgppNo|{w}9m;+8utDP zm$2zpR}vQN^&j{<+z}MdYYBz~Vw?Bwz31I~=G^;ce*8H&1dvBI1|3!mcW_s2_e@Ni zxG!LoT;C1L0?}-4ML=8ZY&rsoit9VCw%c_lsL8rVWW3U8NN+_3u8L1VEo{0yflQ?r zH0-u?eY+(;NW0N#+r3T@_UvlY@w_VCBB>Q5@Fcrl8Dx3V-?A4w?XCKOUt8o}GO=RMDfQNBB!i>Q5e@7;e z{5PlNddq2WdY6}RxNkz&<8^4B)1$Go7iuqFjONzV4Skedfyr|>G<)44-;^e9_Wu^j3g`;X_6YmHs%f&w6Zm2 zczcK&R#V$3_fLLV+Af}3c`c<)?cr%k%j+rK+QrOVN}uPlHs|*d`HVDu740Lss%&2G zpZxr!iT=rV%kW5aF!zPe(4ch94>XJ+iUixa#%LTV{%>Id8Kkj*NxYza&3F~J@s1yi z>Y+@XGni#nQhiJ)ur^6fYCr8udE>aw{-St`8$69LbDi8tA`{FU&Ov3RnKely4f8j2 bAri+h#W6<25pqY+4cz2mgrWo`C~xX7N(0x& literal 0 HcmV?d00001 diff --git a/bin/src/main/java/com/sorts/SortUtils.class b/bin/src/main/java/com/sorts/SortUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..1001b4da29f9995f6f1d822cfd2cb0372931cbac GIT binary patch literal 1261 zcmah|%TC)s6g^`*q=XRC010hEfzn4}9&TB5(V(ajQl&^KT_mMaSs7!%;KY$*Ub`;% zjPAN%(@j@>EcyZcn0`X(8QUd6AQ2@qckbidbI(kE|NZ$3zzeLTkU(VwIu=sUu$aVB z63YTZt4_xWY65DxvLT?YdE2(YSi|Yq>xb>6*k_H8Su*6WoI z0twUi%~OH#8!|}H***~v_0VEg?mCP>{wmGW?j_aDR*NLma2;+syB#w)^f}nfYU|~7 zq*__#N3=B8?r}<^Jdn2LwY#P-rKsNQmGg)rNvJ>UKoNt-0;A2qv<}{w-B`~GxeSu& z7p#&^ty(K{<5z-fJFY`HOIPIV7f9~B&%&UT15wty_D(>}eP?%%`|Yh`K?s^^dWXJc zzjoxq$Xwp>vYa%HAtaM9(s+jFX^bKxFn8h2=wQ|K3R;@QW%#~O%P|2 z@jN{;YmAm0LB#Vn}B;s^p;a%##!z#lqzAI21+_i>@Re%OUA#>^%{)c|wX$=~Gbt E2anqLbpQYW literal 0 HcmV?d00001 diff --git a/bin/src/test/java/com/conversions/AnyBaseToDecimalTest.class b/bin/src/test/java/com/conversions/AnyBaseToDecimalTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3bcf34d48b95c05d03bdc33e27c386003e90274b GIT binary patch literal 1399 zcmb7D-A)rh7(KJJbZkp0OZh4Cr+`ov*tV1c7JtgGXa$6(iHSE$S#e3bjoob%uYCbu zz!&h&8!?)gn0V!#FW?LK0$v%vX}ep+8{A}O&iUrdnV*yW`s>3d0BPj?7>DXZ+z$yV zM}i|M;G!QXEODecmN`~9Ryl5RWH{D1ZgJe^xWjRmBg?VQvB9y)vBj~?vBPnXW0&JT z#{-U>4-b9VW9VEnOvAp-&@mG$FnBg9CptrS&M@`8TKQP7=C$JzRpeZysFey@)eyW@ z^w`e~iy@V>szue-En7X)>Y7@tl&P6@y=oa1(^9kMi*?P?^Oa4#Xq2^5o|GAeh*)uP zjv=gFkTb*^86*0mW4P;;v`KH&r;hFwY2EOY+Cpy zljJRJk#$E(=#u{*AU$Iv?2=}ls{6-hdeNp*Gj`jJnqhh-*VY}`Rl_{Z?8g4B(c*S0 zSe!cOJqe3xulo&a|s#uxrChiT|(9aVSme- zWFeQ3EbJ1J4Ti%lSyadzG9>nKNI;RVx@1_9M_fW~qYi05@>4|VK?C6Q#1V8+J|WDZ z8!HH76FoS9j3+c>pbvHQ<0S_03WIn}>)v1p=NQHpjNlta@ts!xpj>~_-{{2zlQGH0 jFvaF5HW6ZfGpJUGoJ}EySqf93IT7|;BiecDB`o{~AS)vS literal 0 HcmV?d00001 diff --git a/bin/src/test/java/com/conversions/DecimalToAnyBaseTest.class b/bin/src/test/java/com/conversions/DecimalToAnyBaseTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ab805cda0959d151920de0af5085ad4548f4edce GIT binary patch literal 877 zcmb7DZHv=D5Pmk-HZj(_v))zf>%I8WdT?n)1W|-~Dinf(R|&wpC7*fJVHA}h?bA5Aw0AKTnljBZEu9QiCY1- zd~EyJVW>ToO4?@(EA7sRp>m*)1jAY^m3UobV_}AToD$NAb;8pTH`4iYuwp;RoZ(@d zn)smVvJ$^Xd#`UTM}ek zs^ti%c zs59)ld6#d8Mjfa`8zU0Cb#N*SY2NF0>)6F@A9w1wi+c=SugCD<|MjG)O6^mwCefSm zl&A=reFb}}JVUcR71B}42-`SEx6(Zxm{XG03*<#)8QJRn6R@vkc$L;#2?kiBy-TG8tm7hCx{ic+<>7=- zkFedJ@ZOzZC2mw2)jhxZ4Ylv^$qDxS+RQmC-9V)*8c>N%tYU{q98GgpYEDDH4K87W S=r$?l+G&zyxJ;{uD}MoL0o*MB literal 0 HcmV?d00001 diff --git a/bin/src/test/java/com/search/BinarySearchTest.class b/bin/src/test/java/com/search/BinarySearchTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ee18ca621ed390620aa2133eb3893e89a83b4c75 GIT binary patch literal 1193 zcma)*TTc@~6vzM5Zo5ka!mTJ+p1-dWpKp%$akWbLKa*-_AaM1~8AM7*d#0k&YoGWhMp%(;Bi7 za?39y9l03tn2CJveku$N1r4(r<}}>Va971W74r9QYk@F^DSy8vx1GQ4M|&w;h*^fz^O9eJD%ONDt61J6D>QA>v7L^9Xe35St1AXkh#?pc8?!~RIXDXP)F#QDnV+Y*^Mrj@+ z)gZ}8My8L!-qRw43p7W4ql$4_$2$SIh)bj~T&CoZOlAd&Q^@x96GGKvgiG2flxkQx zL8M$&BEE=3eGyfCp=we*)1xV<*_?EJK;P>V#Pn!iHYXF$^%VNExulH$#dOv)sizpI zhV?bI+ik&eIPK11Mk+D@b4q zNmv-dAt5{>h;IqsJ7VyK7)U2N76g`u8i)+dhC^VF{6iCWq_N9SBDIiq}1rby!f)^(-sjI{WFG&0q@BkGE zo{*6E9-a|*W}GGwi^zlT_|83N&b?=x?>|3&0dNKPY)s;qiFq3Z5s%x@aH52hsEAC} z#sW^+IE^zl&cZcu&c+1Jo48=&B7<=w2!nKqp;)P|GiWPO$7k4C4?=$}>$m*)iP!2; zW>-CGd%blp4#az&)Y6S0VW`xTxb3EXlDeDTE6;65eK(2XG;!}_EvjzN`U&mU7$#d| z83ucpV3?OgeJ=?APDCUVSt#iJ&T5!4?0H(3r}n(C>r%$=`Y{!iMoOFkU}eLL8TO7M zM9OQY5@RcjswzLu!Zhgn>p>Dw6U$*3rCu6DA$82_QQUPmGa8+ncV;)DEN=Vv12L`L za{t~t1lMH4j#H*nL$l7m~gZDQHM9jwsl zL-clc0)Lm`#Q!-(9S%7jwl@7X4cdI=^)mnAa~fb}wfe`QkDwZ_lhp6iy^1ozPOI`D zav#M(m^RYb_xj|LCMM2st}?zCReO9BH|$IGMpSE zR2|etHLF5WpoTRrjCy?`WcET*UK!~$M~N?m4{yM7lK7&FDNin>oO>@buSc4ye-bj< z)Ib|i&Qw-LC2o6H!%^&@uUz~Jpsy30o>TPZQe+hMg%4nF<@PRm8Zv2PH?192fIXO| zH}a0a1p#J1=#Rpnn0`W``2oc`w?9K`7K>ZZ8%@oULFXkI4P6FPlfg1%;D)K9$yGJC zc)nBOa_hl3r$XzB%TT4J;;?cCW58f4h9+_5TP3As?H!C$r{9Bc)_auBY^g!F&74o*Kh(2 zxzltpkCQG=;k1i0@NJxRF@^F}kY$D37vm6s&}4NUbhKQJje^j3erlx8tPmuje!}zv#*B#Cg&SZijM8 zGv$WQNO>Nn!5I$93H_=)!hY9{hl{vm&Rb-bOPmfCc&gK|$7U?*m2 zMcxs(BEjqn{WVw=v-hZU-=f;)?gtp%YV{q=PS+;K4o*LQ%!{!K4A}KRl=`fFZRJ8mOa={nTZ3%{Wz#@!y$TBaQGWodWG}= literal 0 HcmV?d00001 diff --git a/bin/src/test/java/com/sorts/InsertionSortTest.class b/bin/src/test/java/com/sorts/InsertionSortTest.class new file mode 100644 index 0000000000000000000000000000000000000000..02da5654648a2b04abb8da289e61a47cef25417e GIT binary patch literal 1635 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 literal 0 HcmV?d00001 diff --git a/bin/src/test/java/com/sorts/ShellSortTest.class b/bin/src/test/java/com/sorts/ShellSortTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6bb98a5e028d5c3acf9ac3dcec6e764e0dc9fd5a GIT binary patch literal 1607 zcma)6*>2N76g`u8i|f*9X`y8=Wl6eV_N9SBDIg(*f(WVd` z&O{?@JN||fdD%MORFbY2Gn{V3QQJ=3II(w}myX>Idv+W~No+T}uJ1P~eL{zIhS9jV z!BE*(<3?0eDU?`!z*^Ud81@wr z*_P8z1jdvYSvB)G4HB>CZg{ar?XCtvm^g_S2GlKYgi*)dNoj0$-j>-6)2Qv<^Tecv znm&{1voHqEFq@6(pA9mM|JIL%i@2oYvV|+SYT+7|b<{0f#|<4T7H;B}j#Ue{vBt1> zfZpvb!{1>z`ClGUdjpDxn>%isrmVko{M3E8P1CF1ul;f21yu7@oVY!@P+>~gDOv7? z_M^xPl4cUQPLC{7vT-w}FkzJ0cNs?!HJJpET9}B&66> zUmHd2BG-6FCOUVsWLfDGNq~|A21F8=m$!`kg+(Iq>SZ+( zI-~3=ol*NMbKuoHO!8$E1{wT}tbI-Xe8B|1VUlr7u@?5RE~Z(G8R6%O^ep$&U_SO^ tntXl6rm5lpdHWh)ageey;kR%IhoKP5K^&n>#nJqJ922);mYyXX{{@IjiADeb literal 0 HcmV?d00001 diff --git a/src/main/java/com/sorts/HeapSort.java b/src/main/java/com/sorts/HeapSort.java index 4937237d49ca..a1cefd091891 100644 --- a/src/main/java/com/sorts/HeapSort.java +++ b/src/main/java/com/sorts/HeapSort.java @@ -4,6 +4,9 @@ import java.util.Arrays; import java.util.List; +import static src.main.java.com.sorts.SortUtils.less; +import static src.main.java.com.sorts.SortUtils.swap; + public class HeapSort { @@ -36,18 +39,18 @@ private void heapSubtree(int rootIndex, int lastChild) { // if has right and left children T left = heap[leftIndex]; T right = heap[rightIndex]; - if (SortUtils.less(left, right) && SortUtils.less(left, root)) { - SortUtils.swap(heap, leftIndex, rootIndex); + if (less(left, right) && less(left, root)) { + swap(heap, leftIndex, rootIndex); heapSubtree(leftIndex, lastChild); - } else if (SortUtils.less(right, root)) { - SortUtils.swap(heap, rightIndex, rootIndex); + } else if (less(right, root)) { + swap(heap, rightIndex, rootIndex); heapSubtree(rightIndex, lastChild); } } else if (leftIndex <= lastChild) { // if no right child, but has left child T left = heap[leftIndex]; - if (SortUtils.less(left, root)) { - SortUtils.swap(heap, leftIndex, rootIndex); + if (less(left, root)) { + swap(heap, leftIndex, rootIndex); heapSubtree(leftIndex, lastChild); } } @@ -80,7 +83,7 @@ private void makeMinHeap(int root) { * @return root of heap */ private T getRoot(int size) { - SortUtils.swap(heap, 0, size); + swap(heap, 0, size); heapSubtree(0, size - 1); // return old root return heap[size]; diff --git a/src/main/java/com/sorts/QuickSort.java b/src/main/java/com/sorts/QuickSort.java index 202a3f9f97e0..31d6a0fbc4a4 100644 --- a/src/main/java/com/sorts/QuickSort.java +++ b/src/main/java/com/sorts/QuickSort.java @@ -1,5 +1,8 @@ package src.main.java.com.sorts; +import static src.main.java.com.sorts.SortUtils.less; +import static src.main.java.com.sorts.SortUtils.swap; + public class QuickSort { @@ -45,14 +48,14 @@ private static > int partition(T[] array, int left, int T pivot = array[mid]; while (left <= right) { - while (SortUtils.less(array[left], pivot)) { + while (less(array[left], pivot)) { ++left; } - while (SortUtils.less(pivot, array[right])) { + while (less(pivot, array[right])) { --right; } if (left <= right) { - SortUtils.swap(array, left, right); + swap(array, left, right); ++left; --right; } diff --git a/src/main/java/com/sorts/SelectionSort.java b/src/main/java/com/sorts/SelectionSort.java index 5dd5699df0ad..1038bec34c58 100644 --- a/src/main/java/com/sorts/SelectionSort.java +++ b/src/main/java/com/sorts/SelectionSort.java @@ -1,5 +1,8 @@ package src.main.java.com.sorts; +import static src.main.java.com.sorts.SortUtils.less; +import static src.main.java.com.sorts.SortUtils.swap; + public class SelectionSort { /** @@ -14,13 +17,13 @@ public > T[] sort(T[] arr) { // Initial index of min int min = i; for (int j = i + 1; j < n; j++) { - if (SortUtils.less(arr[j], arr[min])) { + if (less(arr[j], arr[min])) { min = j; } } // Swapping if index of min is changed if (min != i) { - SortUtils.swap(arr, i, min); + swap(arr, i, min); } } diff --git a/src/main/java/com/sorts/ShellSort.java b/src/main/java/com/sorts/ShellSort.java index e276f362d5a0..d300cfc00349 100644 --- a/src/main/java/com/sorts/ShellSort.java +++ b/src/main/java/com/sorts/ShellSort.java @@ -1,5 +1,8 @@ package src.main.java.com.sorts; +import static src.main.java.com.sorts.SortUtils.less; +import static src.main.java.com.sorts.SortUtils.swap; + public class ShellSort { /** @@ -17,8 +20,8 @@ public > T[] sort(T[] array) { while (n >= 1) { for (int i = n; i < length; i++) { - for (int j = i; j >= n && SortUtils.less(array[j], array[j - n]); j -= n) { - SortUtils.swap(array, j, j - n); + for (int j = i; j >= n && less(array[j], array[j - n]); j -= n) { + swap(array, j, j - n); } } n /= 3;