void swap(int array[], int i, int j)
{
    int tmp = array[i];
    array[i] = array[j];
    array[j] = tmp;
}

int partition(int array[], int lo, int hi)
{
    if(hi > lo)
    {
        int p = array[lo];
        int big = lo;
        for(int i=lo; i<=hi; i++)
        {
            if(array[i] <= p)     
            {
                swap(array, i, big);
                big++;
            }
        }
        swap(array, lo, big-1);
        return big-1;
    }
    return -1;
}

void quickSort(int array[], int lo, int hi)
{
    if(hi > lo)
    {
        int pivot = partition(array, lo, hi); 
        quickSort(array, lo, pivot-1);
        quickSort(array, pivot+1, hi);
    }
}