practice #18
| @ -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