public static int partitionIt(Integer[] a, int left, int right, Integer pivot) {
        int leftPtr  = left - 1;
        int rightPtr = right + 1;

        while (true) {
            while (leftPtr < right && a[++leftPtr] < pivot);
            while (rightPtr > left && a[--rightPtr] > pivot);
            if (leftPtr >= rightPtr)
                break;
            else
                change(a, leftPtr, rightPtr);
        }
        return leftPtr;
    }