From dbd2a89e755ac4941f3afbf3bf78ecb810d1bf55 Mon Sep 17 00:00:00 2001 From: Desislava Shunina <115353472+desiish@users.noreply.github.com> Date: Tue, 22 Oct 2024 17:37:35 +0300 Subject: Add pract03 readme, merge and partition implementations --- Practicum/pract03/README.md | 100 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 Practicum/pract03/README.md (limited to 'Practicum/pract03/README.md') diff --git a/Practicum/pract03/README.md b/Practicum/pract03/README.md new file mode 100644 index 0000000..528ce87 --- /dev/null +++ b/Practicum/pract03/README.md @@ -0,0 +1,100 @@ +# Практикум №3 по СД, спец. ИС + +## Задача 1 +Даден е вектор от думи, съставени изцяло от малки латински букви. Напишете програма, която пренарежда вектора така, че в началото да са всички думи, +започващи с буквата 'а', след тях - тези, започващи с буквата 'b' и т.н. Алгоритъмът да работи in-place. + +***hint*** : търсим сложност Θ(n), където n е големината на масива. + +Пример: + +Вход: +``` +words = {banana, apple, alpaca, cat, biscuit, elephant, string, house, progress, trousers, mouse} +``` + +Изход: +``` +words = {apple, alpaca, banana, biscuit, cat, elephant, house, mouse, progress, string, trousers} +``` + +## Задача 2 +Дадени са два вектора от числа. Напишете програма, която връща нов вектор, който съдържа всички числа от първия вектор и всички числа от втория вектор, +като всички четни числа в новия вектор трябва да предхождат всички нечетни числа и двете групи числа (съответно четни и нечетни) трябва да са в сортиран вид всяка. + +***hint*** : търсим сложност Θ(size_1 + size_2), където size_1 и size_2 са големините на двата вектора. + +Пример: + +Вход: +``` +v1 = {4, 2, 1, 3, 5, 6, 1} +v2 = {9, 2, 3, 1, 2, 1, 2, 1} +``` + +Изход: +``` +result = {2, 2, 2, 2, 4, 6, 1, 1, 1, 1, 1, 3, 3, 5, 9} +``` + +## Задача 3 +Даден е вектор от вектори, които са предварително сортирани. Напишете програма която merge-ва всичките 'подвектори' в един голям вектор, който също е в сортиран вид. + +Тук **НЕ** ви трябва `std::sort`. + +***hint*** : търсим сложност Θ(size_1 + size_2 + ... + size_n), където size_i е размера на i-тия подвектор. + +Пример: + +Вход: +``` +v = {{9, 10, 12}, {14, 17, 18}, {10, 11, 12, 22, 90}, {13}, {16, 18}} +``` + +Изход: +``` +result = {9, 10, 10, 11, 12, 12, 13, 14, 16, 17, 18, 18, 22, 90} +``` + +## Задача 4: +Даден е вектор от цели положителни числа. Напишете програма, която разделя масива на две части, +като първата част съдържа всички числа с четен брой цифри, а втората част - всички с нечетен брой. + +***hint*** : търсим сложност Θ(n), където n е големината на масива. + +Пример: + +Вход: +``` +v = {10, 2, 12, 12, 4, 100, 102020} +``` + +Изход: +``` +result = {10, 12, 12, 102020, 4, 100, 2} +``` + +## Задача 5: +Даден е вектор от думи, съставени изцяло от малки и главни латински букви. Напишете програма, която пренарежда вектора така, че в началото да са всички думи, +започващи с буквата 'а' или 'A', след тях - тези, започващи с буквата 'b' или 'B' и т.н. Алгоритъмът да работи in-place. + +***hint*** : търсим сложност Θ(n), където n е големината на масива. + +Пример: + +Вход: +``` +words = {banana, apple, Alpaca, Cat, biscuit, elephant, string, house, progress, Trousers, mouse} +``` + +Изход: +``` +words = {apple, Alpaca, banana, biscuit, Cat, elephant, house, mouse, progress, string, Trousers} +``` + +--- +> [!IMPORTANT] +> - Задачи 1 и 2 са за работа в час. +> - Задачи 3 - 5 са за домашно. +> - Задачите предавате на leetcode playground, като линк към него качвате [тук](https://docs.google.com/spreadsheets/d/1KVdic02U7f97GT2LFu67t9Z4NqyFLmCj1TjyYdrcLBE/edit?gid=0#gid=0) (всяка отделна задача я закоментирате с клавишната комбинация `Ctrl` + `/`) +--- -- cgit v1.3.1-23-gd82d