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

prace ze cviceni + zadani zapoctu

parent 83b47e46
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
M = 5

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

    for x in A:
        P[x].append(x)
    
    print(P)

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


A = [4,3,2,1,1,4,4,2,0,0,1,2]
print(A)
bucket_sort(A)
print(A)
+39 −0
Original line number Diff line number Diff line
from bintree_c1_2 import BinTree

class BinTreePrint(BinTree):
    def print_tree_rek(self, node, level = 0):
        if node == None:
            return
        self.print_tree_rek(node.left, level + 1)
        print(' ' * 4 * level + '-> ' + str(node.data))
        self.print_tree_rek(node.right, level + 1)

    def print_tree(self):
        self.print_tree_rek(self.root)

A = [0,3,2,1,4,6,9,8,7]

def build_tree_rek(tree:BinTree, A:list, start, end):
    if start>end:
        return
    mid = (start + end)//2

    tree.add(A[mid])
    build_tree_rek(tree, A, start, mid-1)
    build_tree_rek(tree, A, mid+1, end)

def build_tree(tree, A):
    A.sort()
    build_tree_rek(tree, A, 0, len(A)-1)
    

tree2 = BinTreePrint()
for x in A:
    tree2.add(x)
tree2.print_tree()
print('--------------')

tree = BinTreePrint()
build_tree(tree, A)
tree.print_tree()
+39 −0
Original line number Diff line number Diff line
from bintree_c2_2 import BinTree

class BinTreePrint(BinTree):
    def print_tree_rek(self, node, level = 0):
        if node == None:
            return

        self.print_tree_rek(node.left, level+1)
        print(' '*4*level + '-> ' + str(node.data))
        self.print_tree_rek(node.right, level+1)

    def print_tree(self):
        self.print_tree_rek(self.root)

def build_tree_rek(tree:BinTree, A:list, start:int, end:int):
    if start > end:
        return
    mid = (start + end)//2
    tree.add(A[mid])
    build_tree_rek(tree, A, start, mid-1)
    build_tree_rek(tree, A, mid + 1, end)

def build_tree(tree:BinTree, A:list):
    A.sort()
    build_tree_rek(tree, A, 0, len(A)-1)


A = [0,1,3,2,4,8,7,6]
tree = BinTreePrint()

tree2 = BinTreePrint()
for x in A:
    tree2.add(x)
tree2.print_tree()
print('----------------')
build_tree(tree, A)
tree.print_tree()

2024/10/lexi-cv-14h.py

0 → 100644
+23 −0
Original line number Diff line number Diff line
M = 3   # pocet ruznych pismen/pocet prihradek
N = 3   # delka slov

def key(c):     # prevod znaku na index v rozmezi [0..M-1]
    return ord(c)-ord('a')

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

    for l in range(N-1, -1, -1):
        for y in A:
            P[key(y[l])].append(y)

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

A = ['cab', 'bca', 'aac', 'aab', 'aaa', 'bbb', 'bcb']
lexi_sort(A)
print(A)

2024/10/lexi-cv-16h.py

0 → 100644
+25 −0
Original line number Diff line number Diff line
M = 3
L = 3

def key(c):
    return ord(c)-ord('a')

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

    for j in range(L-1, -1, -1):
        for x in A:
            P[key(x[j])].append(x)

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


A = ['bac', 'cab', 'caa', 'cbc', 'abc', 'aba']
print(A)
lexi_sort(A)
print(A)
Loading