diff --git a/Sorts/QuickSort.java b/Sorts/QuickSort.java index ec05938fa..b40dfb343 100644 --- a/Sorts/QuickSort.java +++ b/Sorts/QuickSort.java @@ -15,11 +15,13 @@ class QuickSort { * Sorts the array in increasing order **/ - public static > void QS(T array[], int start, int end) { - if (start < end) { - int PIndex = partition(array, start, end); - QS(array, start, PIndex - 1); - QS(array, PIndex + 1, end); + 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); } } @@ -32,17 +34,32 @@ class QuickSort { * Finds the partition index of an array **/ - public static > int partition(T array[], int start, int end) { - T pivot = array[end]; - int PIndex = start; - for (int i=start;i> 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(T[] array, int initial, int fin) { - T temp = array[initial]; - array[initial] = array[fin]; - array[fin] = temp; + public static > 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 - int[] arr = {3,4,1,32,0,2,44,111,5}; - Integer[] array = new Integer[arr.length]; - for (int i=0;i array = new ArrayList(9); + array = {3,4,1,32,0,2,44,111,5}; - QS(array, 0, arr.length-1); + 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.length-1); + QS(array1, 0,array1.size()-1); //Output => a b c d e - for(int i=0; i