added practice stubs for quick sort

This commit is contained in:
hitanshu310 2025-02-08 02:11:58 +05:30
parent 0e4275c1a8
commit 2902cf5c61
2 changed files with 4 additions and 43 deletions

View File

@ -6,49 +6,6 @@ import com.hithomelabs.princeton1.module5.AbstractCustomSorts;
public class Quick<E> extends AbstractCustomSorts<E> {
@Override
public void sort(E[] arr) {
int N = arr.length;
quickSort(arr, 0, N - 1);
}
public void altSort(E[] arr) {
int N = arr.length;
altQuickSort(arr, 0, N-1);
}
private void altQuickSort(E[] arr, int lo, int hi) {
if (lo >= hi) return;
int i = lo + 1;
int j = i;
while(j <= hi){
if(less((Comparable<E>) arr[j], arr[lo])){
exch(arr, i, j);
i++;
}
j++;
}
exch(arr, i-1, lo);
altQuickSort(arr, lo, i-2);
altQuickSort(arr, i, hi);
}
private void quickSort(E[] arr, int lo, int hi) {
if (lo >= hi) return;
int i = lo;
int j = hi+1;
while(true){
while(less((Comparable<E>) arr[++i], arr[lo])){
if(i == hi) break;
}
while(!less((Comparable<E>) arr[--j], arr[lo])){
if (j == lo ) break;
}
if(j<=i) break;
exch(arr, i , j);
}
exch(arr, j, lo);
quickSort(arr, lo, j-1);
quickSort(arr, j+1, hi);
}
}

View File

@ -33,6 +33,8 @@ class QuickTest {
Assertions.assertArrayEquals(sorted, arr);
}
// * * Optional test for alternate sort implmentation
/*
@Test
@DisplayName("testing Quick sort default implementation")
public void testAltSort(){
@ -45,6 +47,8 @@ class QuickTest {
Apple[] sorted = apples.toArray(new Apple[apples.size()]);
Assertions.assertArrayEquals(sorted, arr);
}
*/
@AfterEach