예제 #1
0
파일: selection.py 프로젝트: muzzheng/algs4
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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