I've just tried my hand at Quicksort, and I seem to have gotten it working (thanks to Stack Overflow). However, is it "true" Quicksort? And is it decently written?
public static void sort(List<Integer> arr, int left, int right) {
int i = left - 1;
int j = right + 1;
if (right - i == 0 || right - i == 1) return;
int v = arr.get(right);
for(;;) {
while(arr.get(++i) < v);
while(v < arr.get(--j) && j != 0)
if(j == 1)break;
if(i >= j)break;
Collections.swap(arr, i, j);
}
Collections.swap(arr, i, right);
sort(arr, left, i - 1);
sort(arr, i, right);
}
I know I should use a regular array (int[]
) for speed, but we can ignore that for now.