コード例 #1
0
def randomized_partition(array, p, r):
    """
        随机选择主元版
    """
    i = random_utils.random_int(p, r)
    array_utils.exchange(array, i, r)
    return partition(array, p, r)
コード例 #2
0
def heap_increase_key(queue, x, key):
    if key < queue[x]:
        print("new key is smaller than current key")
        return
    queue[x] = key
    while x > 0 and queue[max_heap_sort.parent(x)] < queue[x]:
        array_utils.exchange(queue, max_heap_sort.parent(x), x)
        x = max_heap_sort.parent(x)
コード例 #3
0
def partition_by_desc(array, p, r):
    x = array[r]
    i = p - 1
    for j in range(p, r, 1):
        if array[j] >= x:
            i += 1
            array_utils.exchange(array, i, j)
    array_utils.exchange(array, i + 1, r)
    return i + 1
コード例 #4
0
def partition(arr, p, r, x):
    # 先将主元x放置到位置r处
    for j in range(p, r + 1):
        if arr[j] == x:
            array_utils.exchange(arr, j, r)
            break
    i = p - 1
    for j in range(p, r, 1):
        if arr[j] <= x:
            i += 1
            array_utils.exchange(arr, i, j)
    array_utils.exchange(arr, i + 1, r)
    return i + 1
コード例 #5
0
def randomized_partition(arr, p, r):
    i = random_utils.random_int(p, r)
    array_utils.exchange(arr, i, r)
    return partition(arr, p, r)