practice #13
@ -6,49 +6,6 @@ import com.hithomelabs.princeton1.module5.AbstractCustomSorts;
|
|||||||
public class Quick<E> extends AbstractCustomSorts<E> {
|
public class Quick<E> extends AbstractCustomSorts<E> {
|
||||||
@Override
|
@Override
|
||||||
public void sort(E[] arr) {
|
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);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,8 @@ class QuickTest {
|
|||||||
Assertions.assertArrayEquals(sorted, arr);
|
Assertions.assertArrayEquals(sorted, arr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// * * Optional test for alternate sort implmentation
|
||||||
|
/*
|
||||||
@Test
|
@Test
|
||||||
@DisplayName("testing Quick sort default implementation")
|
@DisplayName("testing Quick sort default implementation")
|
||||||
public void testAltSort(){
|
public void testAltSort(){
|
||||||
@ -45,6 +47,8 @@ class QuickTest {
|
|||||||
Apple[] sorted = apples.toArray(new Apple[apples.size()]);
|
Apple[] sorted = apples.toArray(new Apple[apples.size()]);
|
||||||
Assertions.assertArrayEquals(sorted, arr);
|
Assertions.assertArrayEquals(sorted, arr);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@AfterEach
|
@AfterEach
|
||||||
|
Loading…
Reference in New Issue
Block a user