def partition(sequence, i, j): pivot = i i += 1 j -= 1 while i < j: while i < j and sequence[i] < sequence[pivot]: i += 1 while i < j and sequence[j] > sequence[pivot]: j -= 1 basic.swap(sequence, i, j) if sequence[i] >= sequence[pivot]: i -= 1 basic.swap(sequence, pivot, i) return i
def partition(sequence, i, j): basic.swap(sequence, i, median(sequence, i, j)) pivot = i i += 1 k = i j -= 1 while i < j: if sequence[i] < sequence[pivot]: basic.swap(sequence, k, i) i += 1 k += 1 elif sequence[i] > sequence[pivot]: basic.swap(sequence, i, j) j -= 1 else: i += 1 if sequence[j] == sequence[pivot]: j += 1 basic.swap(sequence, pivot, k - 1) return k - 1, j