Alg Řazení v lineárním čase * CoutingSort - příklad counting sortem seřaďte posloupnost: 5,3,7,1,5,2,3,1,2,4,5,3,1,3 * RadixSort - příklad seřaďte posloupnost: 15,3,17,11,25,32,23,21,42,54,75,13,31,33 Co se stane, když v algoritmu radixového třídění budeme zpracovávat souřadnice zleva doprava (místo zprava doleva), tj. ve funkci radixSort() přednáškových slidů vynecháme reversed v záhlaví for-cyklu. Bude takto upravený algoritmus stále fungovat korektně? Pokud ano, vysvětlete proč, pokud ne, sestrojte protipříklad. 3. Rekurze: úvod do teorie a priklady: dle BTS_Naive_priklady_1_4.py T -> BT -> n-arni T -> BST; BT jako datova struktura a jeji rekurzivni definice DFS pre in post # https://www.enjoyalgorithms.com/blog/binary-tree-traversals-preorder-inorder-postorder 5. Rekurzivni DFS pres meta algoritmus prochazeni stromu na nerekurzivni prochazeni stromu - obecne 5.2 Stack: def, implementace (arr, linkedList); priklady; LIFO 5.6 Fronta: def, implementace (arr, linkedList); priklady; FIFO 5.8 Date Structure v meta algoritmu: a] stack; b] fronta a jejich simulace na konkretnim strome - FIFO a LIFO resp. Fronta a Stack jako princip usporadani 7. DFS pro BT: rekurze a stack 9. BFS pro BT: fronta 10. AIMA: Russel, Norvig: 3. Solving Problems by Searching; DFS a BFD https://aima.cs.berkeley.edu/ 11. Porovnani DFS a BFS 11.1 Slozitost na cas a prostor Urcete prostorovou slozitost DFS a BFS v zavislosti na houbce (BT) stromu 13. Implementace BFS frontou a DFS stack a rekurze 13.2 Implementace Stacku a Fronty v Pythonu napr.: a] collections b] list: popleft(), pop() a pop(-1), append(),... https://www.geeksforgeeks.org/deque-in-python/ Prg Funkce a parametry * defaultni, pojmenovane * predavani odkazem a hodnotou: https://unstop.com/blog/mutable-and-immutable-in-python Immutable Built-in Data Types in Python: Numbers, Booleans, Strings, Bytes, Tuples Mutable Built-in Data Types in Python: Lists, Dictionaries, Sets, Custom classes are generally mutable *1.7 Napiste funkci plusNumber(list, number), ktera ke vsem prvkum-intum listu pricte cislo number a list vrati. *1.8 Pokud neni cislo number zadane/definovane pricte hodnotu 1; bere vychozí/defaultní hodnotu 1. (defaultni a pojenovane parametry) *2. Napiste funkce: a) plusOneToInt(n) pricitávající jedničku k intu a vysledek vrati b) plusOneToList(list) pricitavajici jednicku ke všem prvkům v listu a vysledek vrati (predavani odkazem a hodnotou; a jak dostat hodnotu promenne z funkce ven?) Structural and reference equality https://ksvi.mff.cuni.cz/~dingle/2025-6/prog_1/notes_4.html https://medium.com/coder-nomad/understand-pythons-mutable-and-immutable-variables-2f9cc870dee0 * OOP: Objektově orientované programování # https://www.programiz.com/python-programming/class # https://www.programiz.com/python-programming/object-oriented-programming # https://ksvi.mff.cuni.cz/~dingle/2023-4/prog_1/notes_6.html - jedna z odpovedi na otazku jak dekomponovat kod? - objekty, třídy, instance; - 2 motivace: a) buňky b) struct s akcemi/funkcemi - promenne, pole, struct, objekt - data - atributy, funkce, akce - metody - abstract, encapsulation, inheritence, polymorfism # 1 # Definujte tridu Zvire majici: # a) uid # b) konstruktor(uid) # c) abstraktni metodu voice() # 2 # A od ni podedte dve tridy: # a) Pes # b) Kocka # pro ne pretezte\implementujte metodu voice(), # která vytiskne jejich "hlas" (Kocka "Mnau" a Pes "Haf") a uid instance # 3 # Vytvorte # a) 3 instance Kocky # b) 2 instance Psů, # 3.2 # ktere nasledne ulozite do listu # 4 # List iterujte a zavolejte na vsech instacich objektů metodu voice() # 5 # Ve for cyklu vytvorte list 100 Kocek # a ve for cyklu ho projdete a zavolejte metodu voice()