Quick Sort
private static void quickSort(int[] array) {
quickSortHelper(array, 0, array.length - 1);
}
private static void quickSortHelper(int[] array, int low, int high) {
if (low >= high) return;
int pivot = low;
int left = low;
for (int i = low + 1; i <= high; ++i) {
if (array[i] < array[pivot]) {
left++;
int tmp = array[left];
array[left] = array[i];
array[i] = tmp;
}
}
//swap pivot and left
int tmp = array[left];
array[left] = array[pivot];
array[pivot] = tmp;
quickSortHelper(array, left + 1, high);
quickSortHelper(array, low, left - 1);
}