コード例 #1
0
ファイル: bubble.py プロジェクト: schikkam/projects
def bubble_sort(a):
    # swaps each time
    l = len(a)
    for i in range(l):
        for j in range(i+1, l):
            if a[i] > a[j]:
                swap(a, i, j)
コード例 #2
0
ファイル: insertion.py プロジェクト: nchikkam/projects
def insertion_sort(a):
    # insert j'th element to right spot on its left
    l = len(a)
    for i in range(1, l):
        j = i
        while j > 0 and a[j] < a[j-1]:
            swap(a, j, j-1)
            j -= 1
コード例 #3
0
def insertion_sort(a):
    # insert j'th element to right spot on its left
    l = len(a)
    for i in range(1, l):
        j = i
        while j > 0 and a[j] < a[j - 1]:
            swap(a, j, j - 1)
            j -= 1
コード例 #4
0
def selection_sort(a):
    # swaps once with min_index
    l = len(a)
    for i in range(l):
        min_index = i
        for j in range(i + 1, l):
            if a[min_index] > a[j]:
                min_index = j
        swap(a, i, min_index)
コード例 #5
0
ファイル: selection.py プロジェクト: nchikkam/projects
def selection_sort(a):
    # swaps once with min_index
    l = len(a)
    for i in range(l):
        min_index = i
        for j in range(i+1, l):
            if a[min_index] > a[j]:
                min_index = j
        swap(a, i, min_index)
コード例 #6
0
ファイル: heap.py プロジェクト: schikkam/projects
def heap_sort(a):
    l = len(a) - 1
    mid = l // 2
    for i in list(range(mid, 0, -1)):  # O(nlogn)
        heapify(a, i, l)  # log n

    print(a)
    for i in list(range(l, 0, -1)):
        swap(a, 1, i)
        heapify(a, 1, i)
        print(a)
コード例 #7
0
ファイル: heap.py プロジェクト: nchikkam/projects
def heap_sort(a):
    l = len(a)-1
    mid = l//2
    for i in list(range(mid, 0, -1)):   # O(nlogn)
        heapify(a, i, l)  # log n

    print(a)
    for i in list(range(l, 0, -1)):
        swap(a, 1, i)
        heapify(a, 1, i)
        print(a)
コード例 #8
0
ファイル: heap.py プロジェクト: schikkam/projects
def heapify(a, root, l):
    left = 2 * root
    right = (2 * root) + 1
    max_index = root

    # make root's value max(root, left, right)
    if left < l and a[root] < a[left]:
        max_index = left
    if right < l and a[max_index] < a[right]:
        max_index = right

    if max_index != root:
        swap(a, root, max_index)
        heapify(a, max_index, l)
コード例 #9
0
ファイル: heap.py プロジェクト: nchikkam/projects
def heapify(a, root, l):
    left    = 2*root
    right   = (2*root)+1
    max_index = root

    # make root's value max(root, left, right)
    if left < l and a[root] < a[left]:
        max_index = left
    if right < l and a[max_index] < a[right]:
        max_index = right

    if max_index != root:
        swap(a, root, max_index)
        heapify(a, max_index, l)
コード例 #10
0
ファイル: qsort.py プロジェクト: nchikkam/projects
    def _qsort(a, left, right):
        if left >= right:
            return

        mid = (left + right)//2
        swap(a, left, mid)

        # Partition
        last = left
        i = left + 1
        while i <= right:
            if a[i] < a[left]:
                last += 1
                swap(a, i, last)
            i += 1
        swap(a, left, last)

        # recurse
        _qsort(a, left, last-1)
        _qsort(a, last+1, right)
コード例 #11
0
ファイル: qsort.py プロジェクト: schikkam/projects
    def _qsort(a, left, right):
        if left >= right:
            return

        mid = (left + right) // 2
        swap(a, left, mid)

        # Partition
        last = left
        i = left + 1
        while i <= right:
            if a[i] < a[left]:
                last += 1
                swap(a, i, last)
            i += 1
        swap(a, left, last)

        # recurse
        _qsort(a, left, last - 1)
        _qsort(a, last + 1, right)