Quicksort
void quickSort(int arr[], int left, int right) {
int newLeft = left, newRight = right;
int pivot = arr[(left + right) / 2];
/* partition */
while (newLeft <= newRight) {
while (arr[newLeft] < pivot)
newLeft++;
while (arr[newRight] > pivot)
newRight--;
if (newLeft <= newRight) {
int tmp = arr[newLeft];
arr[newLeft] = arr[newRight];
arr[newRight] = tmp;
newLeft++;
newRight--;
}
};
/* recursion */
if (left < newRight)
quickSort(arr, left, newRight);
if (newLeft < right)
quickSort(arr, newLeft, right);
}