diff --git a/Sorts/QuickSort.java b/Sorts/QuickSort.java deleted file mode 100644 index b40dfb343..000000000 --- a/Sorts/QuickSort.java +++ /dev/null @@ -1,107 +0,0 @@ -/** - * - * @author Varun Upadhyay (https://github.com/varunu28) - * - */ - -class QuickSort { - - /** - * This method implements the Generic Quick Sort - * - * @param array The array to be sorted - * @param start The first index of an array - * @param end The last index of an array - * Sorts the array in increasing order - **/ - - public static > void QS(List list, int left, int right) { - if (left>=right) { return } - else - { - int pivot = partition(array, left,right); - QS(list, left, pivot- 1); - QS(list, pivot + 1, right); - } - } - - /** - * This method finds the partition index for an array - * - * @param array The array to be sorted - * @param start The first index of an array - * @param end The last index of an array - * Finds the partition index of an array - **/ - - public static > int partition(List list, int left, int right) { - int mid=(left+right)/2; - T pivot=list.get(mid); - swap(list,mid,right); - while(left=0) - { - ++left; - } - if(left=0) - { - --right; - } - if(left> void swap(List list, int initial, int fin) { - E temp= list.get(initial); - list.set(initial,list.get(fin)); - list.set(fin,temp); - } - - // Driver Program - public static void main(String[] args) { - - // For integer input - ArrayList array = new ArrayList(9); - array = {3,4,1,32,0,2,44,111,5}; - - QS(array, 0, array.size()-1); - - //Output => 0 1 2 3 4 5 32 44 111 - for (int i=0;i array1=new ArrayList(5); - array1 = {"c", "a", "e", "b","d"}; - - QS(array1, 0,array1.size()-1); - - //Output => a b c d e - for(int i=0; i> T[] sort(T[] array) { + doSort(array, 0, array.length - 1); + return array; + } + + + /** + * The sorting process + * + * @param left The first index of an array + * @param right The last index of an array + * @param array The array to be sorted + * + **/ + + private static > void doSort(T[] array, int left, int right) { + if (left < right) { + int pivot = partition(array, left, right); + doSort(array, left, pivot - 1); + doSort(array, pivot , right); + } + } + + /** + * This method finds the partition index for an array + * + * @param array The array to be sorted + * @param left The first index of an array + * @param right The last index of an array + * Finds the partition index of an array + **/ + + private static > int partition(T[] array, int left, int right) { + int mid = (left + right) / 2; + T pivot = array[mid]; + + while(left <= right) { + while(less(array[left], pivot)){ + ++left; + } + while(less(pivot, array[right])) { + --right; + } + if(left <= right) { + swap(array, left, right); + ++left; + --right; + } + } + return left; + } + + // Driver Program + public static void main(String[] args) { + + // For integer input + Integer[] array = {3, 4, 1, 32, 0, 1, 5, 12 ,2, 5 ,7 ,8 ,9, 2, 44, 111, 5}; + + QuickSort quickSort = new QuickSort(); + // quickSort.sort(array); + + //Output => 0 1 1 2 2 3 4 5 5 5 7 8 9 12 32 44 111 + print(array); + + String[] stringArray = {"c", "a", "e", "b", "d"}; + quickSort.sort(stringArray); + + //Output => a b c d e + print(stringArray); + } +} + diff --git a/Sorts/SelectionSort.java b/Sorts/src/sort/SelectionSort.java similarity index 90% rename from Sorts/SelectionSort.java rename to Sorts/src/sort/SelectionSort.java index bc0201ce1..960215a68 100644 --- a/Sorts/SelectionSort.java +++ b/Sorts/src/sort/SelectionSort.java @@ -1,10 +1,13 @@ -package Sorts; +package sort; -import static Sorts.SortUtils.*; +import static sort.SortUtils.*; /** * * @author Varun Upadhyay (https://github.com/varunu28) + * @author Podshivalov Nikita (https://github.com/nikitap492) + * + * @see SortAlgorithm * */ diff --git a/Sorts/ShellSort.java b/Sorts/src/sort/ShellSort.java similarity index 94% rename from Sorts/ShellSort.java rename to Sorts/src/sort/ShellSort.java index 31c2c6077..bafd19b14 100644 --- a/Sorts/ShellSort.java +++ b/Sorts/src/sort/ShellSort.java @@ -1,6 +1,6 @@ -package Sorts; +package sort; -import static Sorts.SortUtils.*; +import static sort.SortUtils.*; /** diff --git a/Sorts/SortAlgorithm.java b/Sorts/src/sort/SortAlgorithm.java similarity index 93% rename from Sorts/SortAlgorithm.java rename to Sorts/src/sort/SortAlgorithm.java index 5fd41ece6..5c88ba41b 100644 --- a/Sorts/SortAlgorithm.java +++ b/Sorts/src/sort/SortAlgorithm.java @@ -1,4 +1,4 @@ -package Sorts; +package sort; /** * The common interface of most algorithms diff --git a/Sorts/SortUtils.java b/Sorts/src/sort/SortUtils.java similarity index 98% rename from Sorts/SortUtils.java rename to Sorts/src/sort/SortUtils.java index 73daf6a13..060d61f2e 100644 --- a/Sorts/SortUtils.java +++ b/Sorts/src/sort/SortUtils.java @@ -1,4 +1,4 @@ -package Sorts; +package sort; import java.util.Arrays; import java.util.List;