void quick_sort(int* array, int l){
if(l == 1) return;
int head = 1;
int tail = l-1;
int middle = 0;
while(head < tail){
while(array[tail] >= array[middle] && head < tail) tail--;
while(array[head] <= array[middle] && head < tail) head++;
int temp = array[tail];
array[tail] = array[head];
array[head] = temp;
}
if(array[head] > array[middle]) head--;
int temp = array[middle];
array[middle] = array[head];
array[head] = temp;
middle = head;
if(middle > 0) quick_sort(array, middle);
if(l-1 > middle) quick_sort(array + middle + 1, l - middle - 1);
}