KIV/PPA1 cvičení 7 Cvičící: Pavel Bžoch
Osnova cvičení Zadání samostatné práce –Vysvětlení nejasností –Způsob odevzdání –Hodnocení Řazení Vyhledávání
Samostatná práce 1 Podrobné zadání – viz courseware, menu Samostatná práce, sekce Ke stažení Standardní odevzdání týden semestru na svém cvičení ( ) –V případě splnění podmínek i zapsání zápočtu Náhradní (pozdní) termín odevzdání není stanoven –Musíte si jej domluvit v týdnu ( ) –Nemusí Vám být vyhověno!
Samostatná práce 2 3 možné postupy odevzdání: –Standardní odevzdání ("vše funguje na poprvé") Odevzdání v týdnu od do Před odevzdáním musí být práce nahraná na portále a zvalidovaná. Práce splňuje všechny body zadání. –Samostatná práce byla odevzdána včas, ale nevyhovuje zadání Při kontrole na řádném termínu odevzdání byly zjištěny chyby v práci, které validátor nezjistil. Práce je vrácena k dopracování.
Samostatná práce 3 Práce je vrácena k dopracování. Je nutné domluvit si náhradní termín odevzdání V tomto případě se strhává JEDEN bod za pozdní odevzdání. –Samostatná práce nebyla odevzdána včas Je nutné si v týdnu domluvit závazný termín pozdního odevzdání Při pozdním odevzdání lze získat pouze minimum bodů ze samostatné práce (5 bodů). Nemusí být umožněno přepracování práce! Práce může být vrácena k přepracování jen jednou!
Algoritmy řazení Algoritmy řazení z přednášky SelectSort –Řazení výběrem InsertSort –Řazení vkládáním BubbleSort –Řazení záměnou –Bublinkové řazení
SelectSort Algoritmus –Posloupnost rozdělena na seřazenou a neseřazenou část –V neseřazené části nalezneme nejmenší prvek –Vyměníme nalezený prvek za prvek na 1. místě v neseřazené části –Seřazenou část rozšíříme o tento prvek –Opakovat dokud existují neseřazené prvky Implementace v Javě –Viz přednášky – kapitola 6.2
InsertSort Algoritmus –Posloupnost rozdělena na seřazenou a neseřazenou část –Vezmeme první prvek z neseřazené části –V seřazené části nalezneme pozici, na kterou patří. Další prvky od něj vpravo v seřazené části se posunou o 1 pozici doprava –Opakovat dokud existují neseřazené prvky Implementace v Javě –Viz přednášky – kapitola 6.3
BubbleSort Algoritmus –Porovnat 2 sousední prvky počínaje prvními dvěma –Pokud prvek s nižším indexem větší, prohodit –Konec na posledním prvku, kde skončí největší –Opakujeme pro 2. největší, konec na předposledním prvku, atd. –Pozn. Lze procházet i obráceně, tj. od konce pole na začátek
BubbleSort Vlastnosti –Pole se částečně seřazuje během probublávání prvků menší počet výměn než InsertSort Implementace v Javě –Viz přednášky – kapitola 6.4
Algoritmy vyhledávání Sekvenční vyhledávání –Pro neseřazenou posloupnost čísel Binární vyhledávání –Půlením intervalů –Pro seřazenou posloupnost čísel
Sekvenční vyhledávání Pro neseřazenou posloupnost Algoritmus –Procházím pole od začátku do konce –Testuji každý prvek na shodnost s hledaným prvkem –Když prvek naleznu, skončím a vrátím jeho pozici, jinak dojdu na konec a vrátím -1 Úplné vyhledávání –Najít všechny výskyty čísla –Musíme vždy projít celé pole
Binární vyhledávání Pouze pro seřazenou posloupnost Algoritmus –Najdu prostřední prvek posloupnosti –Pokud je prostřední prvek větší hledané hodnotě, hledám v levé polovině posloupnosti, jinak v pravé –Opakuji, dokud nenaleznu prvek, nebo dokud není horní hranice intervalu menší než dolní Obtížnější úplné vyhledávání –Nutno prověřit prvky v okolí nalezeného prvku