Exemplo n.º 1
0
def perm(list, begin, end):
    if begin == end:
        printout_list = []
        for list_item in list:
            printout_list.append(list_item)
        print printout_list
    else:
        for i in range(begin, end + 1):
            swap.swap(list, begin, i)
            #确定begin+1~end之间的排列组合
            perm(list, begin + 1, end)
            swap.swap(list, begin, i)
Exemplo n.º 2
0
def bubble_sort(list):
    for size in reversed(range(len(list))):
        # 设置排序校验
        sorted = True

        i = 0
        for k in range(1, size + 1):
            if list[k] < list[i]:
                swap.swap(list, i, k)
                sorted = False
            i = k
        if sorted:
            break
Exemplo n.º 3
0
def selection_sort(list):
    for size in reversed(range(len(list))):
        # 设置排序校验
        sorted = True
        #寻找0~size中,最大值的index
        max_order = 0
        for k in range(1, size + 1):
            if list[k] > list[max_order]:
                max_order = k
            else:
                sorted = False
        #i位置放置最大值
        swap.swap(list, max_order, size)
        if sorted:
            break
Exemplo n.º 4
0
def heap_sort(array):
    array_length = len(array)

    for i in range(array_length, -1, -1):
        heapify(array, array_length, i)

    for i in range(array_length - 1, 0, -1):
        array = swap(array, i, 0)
        heapify(array, i, 0)
def selection_sort(array):
    array_length = len(array)

    for i in range(array_length):
        min_index = i
        for j in range(i + 1, array_length):
            if array[j] < array[min_index]:
                min_index = j
        array = swap(array, i, min_index)
Exemplo n.º 6
0
def heapify(array, array_length, i):
    largest = i
    left = 2 * i + 1
    right = 2 * i + 2

    if left < array_length and array[i] < array[left]:
        largest = left

    if right < array_length and array[largest] < array[right]:
        largest = right

    if largest != i:
        array = swap(array, i, largest)

        heapify(array, array_length, largest)
Exemplo n.º 7
0
def partition(arr, start, stop):
    pivot = start
    i = start - 1
    j = stop + 1
    while True:
        while True:
            i = i + 1
            if arr[i] >= arr[pivot]:
                break
        while True:
            j = j - 1
            if arr[j] <= arr[pivot]:
                break
        if i >= j:
            return j
        arr = swap(arr, i, j)
Exemplo n.º 8
0
def partition_rand(arr, start, stop):
    rand_pivot = random.randrange(start, stop)

    arr = swap(arr, start, rand_pivot)
    return partition(arr, start, stop)