void exch(int arr[], int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
void quick_sort_recursive(int arr[], int left, int right) {
if(left >= right) return;
int pivot = arr[left];
int i = left + 1;
for(int j = left+1; j <= right; j++) {
if(arr[j] < pivot) {
exch(arr, i++, j);
}
}
exch(arr, left, --i);
quick_sort_recursive(arr, left, i-1);
quick_sort_recursive(arr, i+1, right);
}
void quick_sort(int arr[], int n) {
quick_sort_recursive(arr, 0, n-1);
}