Commit 83b47e46 authored by Ing. Petr Pauš, Ph.D.'s avatar Ing. Petr Pauš, Ph.D.
Browse files

09 - quick sort

parent be243383
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
M = 5

def bucket_sort(A:list):
    P = [ [] for j in range(M) ]

    # for i in range(len(A)):
    #     P[A[i]].append(A[i])

    for y in A:
        P[y].append(y)

    # for x in P:
    #     print(x)

    i = 0
    for x in P:
        while len(x):
            A[i] = x.pop(0)
            i += 1

A = [1,1,4,2,1,2,0,0,2,4,3]
bucket_sort(A)
print(A)
+31 −0
Original line number Diff line number Diff line

def quick_sort(A:list, start:int, end:int):
    pivot = A[start]

    i = start
    j = end

    while i<j:
        while A[i]<pivot and i<end:
            i += 1
        while A[j]>pivot and j>start:
            j -= 1
        
        if i<=j:
            A[i], A[j] = A[j], A[i]
            i += 1
            j -= 1
    
    if j>start:
        quick_sort(A, start, j)
    if i<end:
        quick_sort(A, i, end)

A = [5,2,7,1,5,3,8,9,4,2,6,0]
quick_sort(A, 0, len(A)-1)
print(A)

B = ['ahoj', 'ábc', 'xyz', 'dddddd', 'Y', 'uz']
quick_sort(B, 0, len(B)-1)
print(B)
+33 −0
Original line number Diff line number Diff line
def quick_sort_rek(A: list, start:int, end:int):
    pivot = A[start]
    i = start
    j = end

    while i<j:
        while A[i] < pivot and i <= j:
            i += 1
        while A[j] > pivot and j >= i:
            j -= 1
        
        if i<=j:
            A[i], A[j] = A[j], A[i]
            i += 1
            j -= 1

    print(A)

    if j > start:
        quick_sort_rek(A, start, j)
    if i < end:
        quick_sort_rek(A, i, end)


def quick_sort(A:list):
    quick_sort_rek(A, 0, len(A)-1)


A = [2,5,2,8,1,2,3,7,2,0,8,2,1]
quick_sort(A)
print(A)