int partition(int sequence[], int low, int high) { int lowerLimit = low - 1; int upperLimit = high; int key = sequence[high]; while (lowerLimit < upperLimit) { while (sequence[++lowerLimit] < key) ; while (key < sequence[--upperLimit] && upperLimit != low) ; if (upperLimit > lowerLimit) { swap(&sequence[lowerLimit], &sequence[upperLimit]); } } swap(&sequence[lowerLimit], &sequence[high]); return lowerLimit; }