Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

6. úkol - Data sorting

Vaším úkolem je vytvořit soubor sort.py, v kterém bude naimplementován jeden z řadících algoritmů, který má STABLE vlastnost (stabilita). Cílem úkolu je prokázat obecnou znalost řazení. Ve vašem řešení budeme kontrolovat přítomnost a fuknčnost dvou funkcí: sortNumbers a sortData. Jejich detailní syntaxe a popis funkčnosti naleznete níže.

Za každou operaci jsou dva body, za správnou kontrolu v sortData je 1 bod. Celkem je možné získat 5 bodů

K implementaci použijte tuto šablonu: sort.py
K vyhodnocení používáme python verze 3.

Řazení čísel (sortNumbers)

Vytvořte funcki sortNumbers, která na vstupu přijme dva parametry (pole a stringovou hodnotu). Stringová hodnota může být buď ASC nebo DESC a určuje, zdali bude vstupní pole seřazeno vzestupně ši sestupně. Pole, které funkce obdrží jako parametr může být jakékoliv pole libovolné délky, v kterém jsou pouze číselné hodnoty.

Příklad

sortNumbers([4,2,3], 'ASC') vrátí [2,3,4]

sortNumbers([4,2,3], 'DESC') vrátí [4,3,2]

Řazení dat (sortData)

Řadící algoritmus, který používá k seřazení komparativní přístup může být aplikován i na jiné datové typy než čísla. Představte si, že máte pole výrobců aut: manufactures=['Ford','BMW','Audi'] a chceme toto pole seřadit. Bohužel zatím nevíme na základě jakých kritérií toto pole seřadit, proto potřebujeme nejprve definovat řadící kritérium. Budeme tedy řadit podle reputace značky. Vzhledem k tomu, že vás objekty čekají až v dalším semestru, tak vytvoříme pole čísel, které bude odrážet reputaci: reputation=[2,5,6]. Nebo-li Ford má reputaci 2, BMW 5, Audi 6.

Funkce sortData na vstupu přijímá tři parametry (váhy (reputation),data(manufactures), stringová hodnota(ASC, DESC)). Algoritmus provede seřazení dat podle jejich vah a v případě ASC vrátí vzestupně seřazené značky podle reputaci v případě DESC sestupně seřazené značky podle reputace.

Příklad

sortData([2,5,6], ['Ford','BMW','Audi'], 'ASC') vrátí ['Ford','BMW','Audi']

sortData([3,2,4],['Ford','BMW','Audi'], 'DESC') vrátí ['Audi','Ford','BMW']

Nutné podmínky

Aby algoritmus správně pracoval potřebuje tedy dvě pole stéjné délky. Z tohoto důvodu je potřeba ověřit, zdali jsou vstupní parametry validní. V případě, že na vstupu algoritmu jsou pole rozdílné délky, pak funkce sortData vyhodí vyjímku: ValueError('Invalid input data') za správně vyhozenou vyjímku je 1bod.

Bodování

Za úlohu je možné získat 5 bodů. 2 body za funkci sortNumbers, 2 body za funkci sortData a 1 bod za správně implementovanou kontrolu vstupu - viz popis funkce sortData

courses/b6b36zal/zadani/6_data_sorting.txt · Last modified: 2018/09/29 17:04 by seredlad