MKR 2

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

Метод сортування обміном, принцип сортування, приклад для послідовності, що складається з п'яти цілих чисел. Швидкість зростання методу сортування обміном.

BUBBLE Принцип сортування: зліва направо почергово іде порівняння двох сусідніх елементів. Якщо вони не впорядковані між собою, то їх міняють місцями. В базовому алгоритмі проходження масиву та чергове впорядкування повторюють n-1 разів, максимальний елемент опиняється в кінці масиву. Час роботи: O(n2) Приклад:

Метод сортування вставкою, принцип сортування, приклад для послідовності, що складається з п'яти цілих чисел. Швидкість зростання методу сортування вставкою.

INSERTATION Принцип сортування: масив розподіляється на відсортовану та невідсортовану частини. На першому кроці за відсортовану частину (послідовність) приймається перший елемент масиву. Кожний наступний елемент з невідсортованої частини вставляємо в заздалегідь відсортовану послідовність так, щоб ця послідовність залишалася відсортованою. Час роботи: O(n2). Основні етапи: 1. Знайти місце, куди потрібно вставити цей елемент. 2. Зсунути елементи, що стоять справа у відсортованій частині, на одну позицію вправо. 3. На звільнене місце поставити елемент, що аналізується (вставляється). Два способи виконання цих дій: 1) кожний наступний елемент порівнюється з елементами у відсортованій частині, знаходиться місце вставки, всі наступні елементи зсуваються на одну позицію вправо і після цього вставляється елемент; 2) елемент, що вставляється, послідовно, зліва направо, порівнюється з кожним із елементів у відсортованій частині. Якщо потрібно, елемент у відсортованій частині одразу зсувається на одну позицію вправо. Як тільки знайдено потрібне місце вставки, елемент, що аналізується, вставляється на потрібну позицію.

Метод сортування злиттям, принцип сортування, приклад для послідовності, що складається з п'яти цілих чисел. Швидкість зростання методу сортування злиттям.

MERGE_SORT Принцип сортування: рекурсія досягає нижньої межі, коли розмірність послідовності, яку необхідно відсортувати дорівнює 1. Ключова операція - об'єднання двох відсортованих послідовностей - злиття. Час роботи: O(n log2(n)). Три етапи: 1. Розділення послідовності з n елементів на дві послідовності розмірності n/2. 2. Володарювання: рекурсивно сортуємо ці дві послідовності з використанням сортування злиттям. 3. Комбінування: об'єднуємо дві відсортовані послідовності в одну відсортовану. Приклад:

Швидке сортування, принцип сортування, приклад для послідовності, що складається з п'яти цілих чисел. Швидкість зростання швидкого сортування.

QUICK_SORT Принцип сортування: рекурсія досягає нижньої межі, коли розмірність послідовності, яку необхідно відсортувати дорівнює 1. Ключова операція - розділення на підмасиви. Три етапи: 1.Розділення: масив Array[left]...Array[right] розділяється на два (можливо порожніх) підмасива Array[left]...Array[q-1] та Array[q+1]... Array[right], таких, що кожний елемент Array[left]...Array[q-1] менше або дорівнює елементу Array[q], який не більше елементів підмасиву Array[q+1]...Array[right]. 2.Володарювання: підмасиви Array[left]...Array[q-1] та Array[q+1]...Array[right] сортуємо за допомогою рекурсивного виклику функції швидкого сортування. 3.Комбінування: весь підмасив Array[left]...Array[right] у результаті роботи алгоритму виявляється відсортованим, тому об'єднання не потребує. Час роботи:O(n log2(n)).

Функція додавання елемента в однозв'язний список (БС).

x- елемент, після якого ми вставляємо новий елемент t - вказівник

Метод сортування вибором, принцип сортування, приклад для послідовності, що складається з п'яти цілих чисел. Швидкість зростання методу сортування вибором.

SELECTION Принцип сортування: масив також поділити на відсортовану та невідсортовану частини. На першому кроці весь масив вважати невідсортованим. У невідсортованій частині знайти мінімальний (або максимальний) елемент та поміняти місцями з першим елементом (з нульовим індексом) невідсортованої частини. Тепер цей елемент вважати першим елементом відсортованої частини. Таку саму процедуру повторити з новою не відсортованою частиною (n-1) разів. Після кожного разу межа, що розділяє відсортовану і не відсортовану частини, буде зсунута на одну позицію праворуч. Час роботи: O(n2). Приклад:

Функція пошуку мінімального за ключем елемента в однозв'язному списку (БС)

head - вказівник на 1 елемент

Функція пошуку елемента за ключем в однозв'язному списку (БС).

head - вказівник на початок key -значення, що шукаємо

Функція видалення елемента з однозв'язного списку (БС)

x - елемент, після якого треба видалити інший елемент

Метод сортування вибором, інваріант циклу.

Інваріант зовнішнього циклу: На початку кожної ітерації циклу підмасив Array[0]..Array[s-1] містить s найменших елементів масиву у відсортованому порядку, де s - індекс, який розділяє масив на відсортовану та невідсортовану частини. Інваріант внутрішнього циклу(пошук мінімального елементу): На початку кожної ітерації циклу елемент Array[j] є найменшим елементом у підмасиві Array[s]...Array[j - 1].

Метод сортування обміном, інваріант циклу.

Інваріант зовнішнього циклу: На початку кожної ітерації циклу підмасив Array[i + 1]...Array[n - 1] містить (n - і - 1) найбільших елементів масиву у відсортованому порядку, де і - індекс, який розділяє масив на відсортовану та невідсортовану частини. Інваріант внутрішнього циклу: На початку кожної ітерації циклу елемент Array[j] є найбільшим елементом у підмасиві Array[0]... Array[j].

Метод сортування злиттям, інваріант циклу.

Інваріант циклу для злиття: На початку кожної ітерації циклу підмасив Array[left]...Array[k-1] містить k-left найменших елементів відсортованих масивів L та R у відсортованому порядку. L[i] та R[j] є найменшими елементами цих масивів, які ще не були скопійованими назад у Array, де: L - копія відсортованого підмасиву Array[left]. Array[m]; R - копія відсортованого підмасиву Array[m+1].Array[right]; M = (left + right)/2; left - лівий індекс вхідного масиву Array; right - правий індекс вхідного масиву Array; Array - вхідний масив з елементами: Array[left]...Array[right]. i, j - індекси масивів L, R; k - індекс Array, куди копіюється слідуючий найменший елемент.

Визначення двовимірного масиву, приклад.

Двовимірний масив - масив, який має 2 розмірності, тобто 2 координати. (Приклад - матриця)

Швидке сортування, інваріант циклу.

Інваріант циклу для розділення: На початку кожної ітерації для будь-якого індексу к справедливим є: 1. якщо left < к < i, тоді Array[k] < х; 2. якщо i + 1 < к < j - 1, тоді Array[k] > х; 3. якщо к = right, тоді Array[k] = х. Індекси між j та right не потрапляють в жоден випадків, тому значення відповідних елементів не мають визначеного зв'язку з опорним елементом х.

Для чого потрібен інваріант циклу?

Інваріант циклу дозволяє зрозуміти чи правильно працює алгоритм. Для цього потрібно показати, що інваріанти циклів мають 3 властивості: 1) Ініціалізація - вони справедливі перед першою ініціалізацією циклу. 2) Збереження - якщо вони істинні перед черговою ітерацією циклу, то залишаються істинним після неї. 3) Завершення - по завершенню циклу інваріанти дають можливість переконатися в правильності алгоритмів.

Метод сортування вставкою, інваріант циклу

Інваріант циклу: на початку кожної ітерації циклу елементи Array[0]... Array[j - 1] є елементами відсортованої частини, зазначимо, що елементи Array[0]... Array[j - 1] від самого початку знаходились в позиціях від 0 до j - 1 (але не були впорядкованими), однак зараз вони відсортовані, де j - індекс, який розділяє масив на відсортовану та невідсортовану частини.

Визначення алгоритму

Алгоритм - це будь-яка коректно визначена обчислювальна процедура, на вхід (input) якої подається деяка величина або набір величин і результат (output) виконання є вихідна величина або набір величин. Тобто алгоритм - це скінчена послідовно визначена кількість кроків, які перетворюють вхідні дані у вихідні, причому кожний крок повинен бути виконаний за кінцевий час та повинен використовувати кінцевий об'єм пам'яті. Алгоритм повинен: 1) давати правильний розв'язок задачі; 2) ефективно використовувати обчислювальні ресурси.

Метод декомпозиції, основні кроки.

Багато алгоритмів мають рекурсивну структуру. Для розв'язку задачі вони рекурсивно викликають себе один чи декілька разів, вирішуючи допоміжні підзадачі. Їх розроблюють за допомогою методу декомпозиції («РОЗДІЛЯЙ І ВОЛОДАРЮЙ»): 1. Сложная задача делиться на несколько простых, которые имеют меньший объем 2. Эти задачи решаются рекурсивыным методом 3. Полученные результаты комбинируют для получения решения всей задачи Три основні кроки: 1. Розділення задачі на підзадачі - менші екземпляри задач. 2. Володарювання над підзадачами шляхом рекурсивного розв'язку 3. Комбінування розв'язку усієї задачі.

Що таке бінарна піраміда, приклад для послідовності, що складається з п'яти цілих чисел.

Бінарна піраміда: структура даних бінарна піраміда є масивом, який можна розглядати, як бінарне дерево кожний вузол цього дерева відповідає елементу масиву. Дерево повністю заповнене на усіх рівнях, за винятком, можливо, найнижчого, який заповнюється зліва направо.

Метод сортування підрахунком, принцип сортування, приклад для послідовності, що складається з п'яти цілих чисел. Швидкість зростання методу сортування підрахунком.

Вважаємо, що кожний із n вхідних елементів масиву Array є цілим числом з інтервалу від 0 до k - 1, де k - деяка ціла константа. Принцип сортування: для кожного елемента масиву Array[j] визначаємо кількість елементів, що менші за нього. За допомогою цієї інформації визначаємо індекс в якому він має знаходитись. Цей алгоритм потребує додаткового використання пам'яті: B[0]... B[n-1] - містить відсортовані вхідні дані; C[0]... C[k-1] - тимчасовий робочій простір. Час роботи алгоритму сортування підрахунком: O(n).

Властивість незростаючої піраміди, приклад піраміди, що задовольняє властивості незростаючої піраміди.

Властивість незростаючої піраміди: Для кожного не кореневого вузла і виконується: Array[(i - 1)/2] ≥ Array[i], тобто значення батьківського вузла більше за значення дочірніх.

Що таке динамічні та нелінійні структури. Операції над динамічними множинами.

Динамічні структури за визначенням характеризуються відсутністю фізичної суміжності елементів структури в пам'яті, непостійністю і непередбачуваністю розміру (кількість елементів) структури в процесі її обробки Граф - це складна нелінійна багато-зв'язна динамічна структура, що відображає властивості і зв'язки складного об'єкту. Ця багато-зв'язна структура має наступні властивості: на кожний елемент (вузол, вершину) може бути довільна кількість посилань; кожний елемент може мати зв'язок з будь-якою кількістю інших елементів; кожний зв'язок (ребро, дуга) може мати напрям і вагу.

Задача сортування, формальне визначення, екземпляр задачі, приклад для послідовності, що складається з п'яти цілих чисел.

Задача сортировки состоит в том, что при подаче последовательности чисел (a1, a2,a3...) произошла такая их перестановка, что на выходе эта последовательность была отсортирована ( т.е а1<a2<a3...) Формальне визначення: • Вхід: послідовність із n чисел {а1, а2, ..., аn }; • Вихід: перестановка {а1', а2', ..., аn'}вхідної послідовності так, що а1'< а2'< ...,<аn' Екземпляр задачі сортування - потрібна вхідна послідовність. Допустим при вводе чисел 2 6 7 9 5 выводиться будут 2 5 6 7 9.

Що таке зв'язний список.

Зв'язані списки - динамічна структура даних, в якій об'єкти розташовані в лінійному порядку. Кожний елемент або вузол містить дані (KEY) і посилання (NEXT) на наступний елемент (вузол). На відмінну від масива, в якому порядок слідування визначається індексом, порядок у зв'язаному списку визначається вказівниками на наступний вузол.

Коли алгоритм є коректним? Що таке екземпляр задачі, приклад для задачі сортування.

Коли для будь-яких вхідних даних результати його роботи є коректні вихідні дані. Екземпляр задачі складається з вхідних даних, які задовольняють всім обмеженням, які були накладені при постановці завдання.

Визначення лінійного алгоритму, приклад (БС).

Лінійний алгоритм - це алгоритм, який складається з однозначної послідовності дій. В якому всі вказівки виконуються одна за одною і не містить розгалужень та повторень.

Що таке масив, характеристики, зображення у ДД.

Масив - структура даних, що являє собою сукупність фіксованого розміру впорядкованих однорідних незалежних змінних. Характеристика масиву: 1. Кіл-ть розмірностей (координат) 2. Спільним ідентифікатором (ім'я масиву) 3. Індексом або сукупністю індексів.

Що таке множина, приклад.

Множина — абстрактний тип даних і структура даних в інформатиці, є реалізацією математичного об'єкта скінченна множина. Дані типу «множина» дозволяють зберігати обмежене число значень певного типу без певного порядку. Повторення значень, як правило, неприпустимо. За винятком того, що множина в програмуванні скінченне, воно загалом відповідає концепції математичної множини. Для цього типу в мовах програмування зазвичай передбачені стандартні операції над множинами.

Визначення одновимірного масиву, приклад.

Одновимірний масив - масив, який має одну розмірність. (Приклад - Вектор)

Що таке однозв'язний список. Структура вузла. Основні операції.

Однозв'язний список - вид зв'язного списку, де кожний елемент або вузол містить дані (KEY) і посилання (NEXT) на наступний елемент (вузол). Структура вузла: дані (KEY) і посилання (NEXT) на наступний елемент. typedef struct list{ int key; struct list *next; } linked_list;

Метод сортування злиттям, функція злиття (БС), швидкість зростання функції злиття.

Принцип злиття: у двох відсортованих послідовностей відслідковуємо найменші елементи; у циклі в вихідну послідовність переносимо той елемент, який виявися меншим із найменших елементів відсортованих послідовностей. Цей крок повторюється поки в одній з послідовностей не закінчаться елементи, після чого елементи з послідовності, що залишилась поміщаються в вихідну послідовність. Час виконання: О(n), n=right-left+1-загальна кількість елементів, які потрібно злити;

Швидке сортування, функція розділення (БС).

Принцип розділення: функція розділення шукає індекс опорного елементу q та впорядковує елементи підмасивів без залучення додаткової пам'яті, рис. 5.1. Вхідні дані: Array - масив; left, right - лівий, правий індекси підмасиву Array, який необхідно розділити.

Які існують механізми доступу до даних?

Програма складається з алгоритмів та структури даних, визначених задачею. Ступінь прив'язки типа даних до способу зберігання у пам'яті має зворотній зв'язок з його абстракцією. Чим абстрактнішим стає тип даних, тим більше концептуальне представлення про спосіб зберігання відрізняється від реального (фактичного) способу їх зберігання в пам'яті комп'ютера. Складні типи даних мають абстрактну структуру. Фіз. аспекти зберігання відходять на другий план у результаті введення механізму доступа до даних (DATA ENGINE), тобто механізму зберігання і отримання інформації. Існують 4 механізми доступу: 1. Queue 2. Stack 3. Linked List 4. Binary Tree

Пірамідальне сортування, інваріант циклу побудови незростаючої піраміди.

Пірамідальне сортування (англ. Heapsort, «Сортування купою») — алгоритм сортування, працює в найгіршому, в середньому і в найкращому випадку (тобто гарантовано) за Θ(n log n) операцій при сортуванні n елементів. Кількість застосовуваної службової пам'яті не залежить від розміру масиву (тобто, O (1)). Інваріант циклу функції BUILD-MAX-HEAP: На початку кожної ітерації, кожний вузол і + 1, і + 2, ..., n - 1 є коренем незростаючої піраміди. Час роботи функції BUILD-MAX-HEAP: O(n)

Пірамідальне сортування, функція побудови незростаючої піраміди (БС). Швидкість зростання.

Пірамідальне сортування (англ. Heapsort, «Сортування купою») — алгоритм сортування, працює в найгіршому, в середньому і в найкращому випадку (тобто гарантовано) за Θ(n log n) операцій при сортуванні n елементів. Кількість застосовуваної службової пам'яті не залежить від розміру масиву (тобто, O (1)). Побудова незростаючої піраміди. Для побудови незростаючої піраміди скористаємось функцією BUILD- MAX-HEAP, рис.6.3. Вхідні дані: Array - масив, n - розмірність масиву. Функцію MAX-HEAPIFY можна використати у зворотному напрямку: піднімаючись від листів дерева до кореня. Елементи Array[n/2]...Array[n - 1] є листами дерева, тому кожний з них можна вважати одноелементною пірамідою.

Пірамідальне сортування, принцип сортування, приклад для послідовності, що складається з п'яти цілих чисел. Швидкість зростання пірамідального сортування.

Пірамідальне сортування (англ. Heapsort, «Сортування купою») — алгоритм сортування, працює в найгіршому, в середньому і в найкращому випадку (тобто гарантовано) за Θ(n log n) операцій при сортуванні n елементів. Кількість застосовуваної службової пам'яті не залежить від розміру масиву (тобто, O (1)). за Θ(n log n) операций при сортировке n элементов. Принцип сортування: алгоритм починається з побудови незростаючої піраміди з вхідного масиву Array[0].. Array[n - 1]. Оскільки, найбільший елемент масиву знаходиться у корені (Array[0]), його можна поміняти місцями з останнім елементом масиву (Array[n - 1]). Після чого зсунути межу відсортованості масиву на 1 ліворуч. У отриманої піраміди новий корінь порушує властивість незростаючої піраміди - виконаємо відновлення цієї властивості шляхом виклику функції MAX-HEAPIFY.

Пірамідальне сортування, функція відновлення властивості незростаючої піраміди (БС). Швидкість зростання.

Пірамідальне сортування (англ. Heapsort, «Сортування купою») — алгоритм сортування, працює в найгіршому, в середньому і в найкращому випадку (тобто гарантовано) за Θ(n log n) операцій при сортуванні n елементів. Кількість застосовуваної службової пам'яті не залежить від розміру масиву (тобто, O (1).

Метод сортування за розрядами, принцип сортування, приклад для послідовності, що складається з п'яти чисел з діапазону від 10 до 99. Швидкість зростання методу сортування за розрядами.

Сортування за розрядами: цей алгоритм використовували в машинах, призначених для сортування перфокарт. Перфокарти мали 80 стовпців, в кожному з яких можна було зробити 12 отворів. Сортувальник перевіряв заданий стовпчик кожної перфокарти, що знаходилась у колоді, і розподіляв перфокарти по 12 приймачам залежно від того, в якій позиції розташований отвір. Принцип сортування: спочатку проводиться стійке сортування за молодшою цифрою, після чого перфокарти об'єднуються в одну колоду, в якій спочатку йдуть перфокарти з нульового приймача, потім - з першого, потім - з другого тощо. Після чого проводиться сортування за передостанньою цифрою, перфокарти об'єднуються в одну колоду за тим же правилом. Процес продовжується доти, поки перфокарти не будуть відсортованими за усіма розрядами.

Що таке стек. Приклади з реального життя. Операції над стеком.

Стек - лінійна структура даних, робота з якою відбувається по принципу «останнім зайшов - останнім вийшов». LIFO - last-in, first-out. Приклад стеку з життя: стопка тарілок - тарілка, яка знаходиться зверху, тобто поклали в стопку останньою, буде взята для користування першою. Довільний доступ до елементів заборонений. Операції над стеком: 1. Запитів немає 2. Модифікації а) INSERT - push; б) DELETE - pop.

Що таке структура, приклад.

Структура - це набір даних, де дані можуть бути різного типу. Наприклад, структура може містити кілька змінних типу int і кілька змінних типу char. Змінні, які міститися в структурі називаються членами або полями структури. Структури можна визначати за допомогою ключового слова struct.

Реалізація стека за допомогою масиву. Структура даних. Функція вивільнення пам'яті (БС).

Структура даних - адресований тип даних, складений. Змінні, що входять до неї наз. її членами (полями). Стек з полів: array - вказівка на масив, n - розмір масива, top - вершина стека. Словесний опис: array[0] ... array[top] - елементи, array[0] - дно, array[top] - вершина, S - вказівник на структуру стек. Для вивільнення пам'яті, що виділено під стек, будемо використовувати функцію FREE_STACK.

Реалізація стека за допомогою масиву. Структура даних. Функція взяття елемента зі стека (БС).

Структура даних - адресований тип даних, складений. Змінні, що входять до неї наз. її членами (полями). Стек складається з полів: array - вказівка на масив, n - розмір масива, top - вершина стека. Словесний опис: array[0] ... array[top] - елементи, array[0] - дно, array[top] - вершина, S - вказівник на структуру стек. Для взяття з стеку будемо використовувати функцію POP. При спробі взяття елемента з порожнього стеку, він спустошується (STACKUNDERFLOW).

Реалізація стека за допомогою масиву. Структура даних. Функція запису в стек (БС).

Структура даних - адресований тип даних, складений. Змінні, що входять до неї наз. її членами (полями). Стек складається з полів: array - вказівка на масив, n - розмір масива, top - вершина стека. Словесний опис: array[0] ... array[top] - елементи, array[0] - дно, array[top] - вершина, S - вказівник на структуру стек. Для запису в стек будемо використовувати функцію PUSH. При спробі запису елемента в повний стек, він переповнюється (STACKOVERFLOW).

Реалізація стека за допомогою масиву. Структура даних. Функція перевірки чи стек порожній (БС).

Структура даних - адресований тип даних, складений. Змінні, що входять до неї наз. її членами (полями). Стек складається з полів: array - вказівка на масив, n - розмір масива, top - вершина стека. Словесний опис: array[0] ... array[top] - елементи, array[0] - дно, array[top] - вершина, S - вказівник на структуру стек. Для перевірки, чи стек порожній, будемо використовувати функцію STACK_EMPTY. Якщо S->top=-1, то стек порожній (EMPTY).

Реалізація стека за допомогою масиву. Структура даних. Функція ініціалізації стека (БС).

Структура даних - адресований тип даних, складений. Змінні, що входять до неї наз. її членами (полями). Стек складається з полів: array - вказівка на масив, n - розмір масива, top - вершина стека. Словесний опис: array[0] ... array[top] - елементи, array[0] - дно, array[top] - вершина, S - вказівник на структуру стек. Для ініціалізації стеку будемо використовувати функцію INIT_STACK, де n -розмірність стека.

Реалізація стека за допомогою масиву. Структура даних. Функція перевірки чи стек повний (БС).

Структура даних - адресований тип даних, складений. Змінні, що входять до неї наз. її членами (полями). Стек складається з полів: array - вказівка на масив, n - розмір масива, top - вершина стека. Словесний опис: array[0] ... array[top] - елементи, array[0] - дно, array[top] - вершина, S - вказівник на структуру стек. Для перевірки, чи стек повний, будемо використовувати функцію STACK_FULL. Якщо S->top=(S->n)-1, то стек повний (FULL).

Реалізація черги за допомогою масиву. Структура даних. Функція взяття елемента з черги (БС).

Структура даних - адресований тип даних, складений. Змінні, що входять до неї наз. її членами (полями). Черга складається з полів: array - вказівка на масив, n - розмір масива, head - голова черги, tail - хвіст . Словесний опис: array[head] ... array[tail] - елементи, array[head] - елемент в голові, array[tail-1] - останній елемент в черзі. Елементи черги розміщенні в комірках, що циклічно замкнені, тобто елемент з індексом 0 слідує одразу за елементом з індексом n-1. Для взяття елемента з голови використовуємо функцію DEQUEUE. Якщо черга порожня, то при спробі взяття елемента виникає помилка спустошення.

Реалізація черги за допомогою масиву. Структура даних. Функція додавання елемента в чергу (БС).

Структура даних - адресований тип даних, складений. Змінні, що входять до неї наз. її членами (полями). Черга складається з полів: array - вказівка на масив, n - розмір масива, head - голова черги, tail - хвіст . Словесний опис: array[head] ... array[tail] - елементи, array[head] - елемент в голові, array[tail-1] - останній елемент в черзі. Елементи черги розміщенні в комірках, що циклічно замкнені, тобто елемент з індексом 0 слідує одразу за елементом з індексом n-1. Для запису елемента в хвіст використовуємо функцію ENQUEUE. Якщо черга повна, то при спробі додати елемент виникає помилка переповнення.

Визначення структурованої блок-схеми, приклад (БС).

Структурована блок-схема - блок-схема, яка може бути зображена з 4 елементарних структур (лінійна, умовна, цикл з передумовою, цикл з постумовою). Доведено, що будь-яка послідовність дій може бути відображена структурованою блок-схемою. При розробці алгоритмів ефективним є спосіб структуризації програми, тобто зверху вниз.

Стійкість алгоритму сортування підрахунком. Переваги та недоліки сортування підрахунком.

Стійкість алгоритму підрахунком: елементи з однаковим значенням знаходяться у вихідному масиві в тому ж порядку, що й у вхідному. Недоліки: кількість переміщень 9/4 n . Вимагає додаткової пам'яті

Визначення типу даних, навести три приклади базових типів даних.

Тип даних — характеристика, яку явно чи неявно надано об'єкту (змінній, функції, полю запису, константі, масиву тощо). Тип даних визначає множину припустимих значень, формат їхнього збереження, розмір виділеної пам'яті та набір операцій, які можна робити над даними.

Аналіз алгоритмів, міра ефективності.

У загальному випадку час роботи алгоритму збільшується зі збільшенням кіл-ті вхідних даних, тому час роботи алгоритму визначають як ф-цію, залежну від розмірів вхідних даних (INPUT SIZE). У багатьох задачах - це кіл-ть елементів (для масиву - кіл-ть n, для інших задач - загальна кіл- ть бітів необхідних для представлення даних у двійковій сист. числення). Час роботи алгоритму вимірюється в кіл-ті елементарних операцій, які необхідно виконати. Розрізняють аналіз алгоритму і аналіз реалізації. Кіл-ть виконаних операцій - властивість алгоритму. Час виконання операцій - властивість комп. Таке відокремлення дозволяє порівнювати алгоритми способам, що не залежить від конкретної реалізації та типу комп'ютера. З іншого боку аналіз алгоритму можна проводити аналітично та емпірично. Переваги порівняння аналітичного та емпіричного аналізів: а) якщо збігаються, зростає довіра до обох досліджень; б) якщо не збігаються, можемо дізнатися більше про алгоритм і модель, дослідивши на відповідність.

Що таке вказівник. Три причини використання вказівників.

Указатели - это переменные, показывающие место или адрес памяти, где расположены другие объекты (переменные, функции и др.). Так как указатель содержит адрес некоторого объекта, то через него можно обращаться к этому объекту. Існує, принаймні, три причини використання вказівників на структури: - вказівниками легче керувати; - структура не може передаватись функції в якості аргумента, але це можливо для вказівника; - в деяких оголошеннях даних використовуються структури, які містять вказівники на інші структури.

Що таке умовна структура, різновиди.

Умовна структура-виконання/не виконання дії по логічній умові (В). Умовні структури бувають: а) Повна конструкція б) Неповна конструкція в) Вибір - узагальнений варіант умовної структури. Розгалуження на n-гілок.

Визначення умовного алгоритму, приклад (БС).

Умовний алгоритм - це алгоритм, який вміщує лінійні та умовні структури.

Визначення циклу з лічильником, приклад (БС).

Цикл з лічильником — цикл, в якому деяка змінна змінює своє значення від заданого початкового значення до кінцевого значення з деяким кроком, і для кожного значення цієї змінної тіло циклу виконується один раз. Повторення операцій кінцеве (фіксоване) число разів.

Визначення циклу з лічильником, приклад (ДД).

Цикл з лічильником — цикл, в якому деяка змінна змінює своє значення від заданого початкового значення до кінцевого значення з деяким кроком, і для кожного значення цієї змінної тіло циклу виконується один раз. Повторення операцій кінцеве (фіксоване) число разів.

Визначення циклу з передумовою, приклад (ДД).

Цикл з передумовою - операція або група операцій, що виконується до тих пір, поки логічна умова B=true. Умова перевіряється перед виконанням операції.

Визначення циклу з передумовою, приклад (БС).

Цикл з передумовою - операція або група операцій, що виконується до тих пір, поки логічна умова B=true. Умова перевіряється перед виконанням операції.

Які існують циклічні структури, особливості роботи кожної з них.

Цикл з передумовою - операція або група операцій, що виконується до тих пір, поки логічна умова B=true. Умова перевіряється перед виконанням операції. Цикл з постумовою - цикл, в якому умова перевіряється після виконання тіла циклу. Цикл з лічильником — цикл, в якому деяка змінна змінює своє значення від заданого початкового значення до кінцевого значення з деяким кроком, і для кожного значення цієї змінної тіло циклу виконується один раз. Повторення операцій кінцеве (фіксоване) число разів. Безумовний цикл. Нескінченй цикл з'являється, коли некоректно використовується зміна циклу або некоректно сформована умова виходи з циклу.

Визначення циклу з постумовою, приклад (БС)

Цикл з постумовою - цикл, в якому умова перевіряється після виконання тіла циклу.

Визначення циклу з постумовою, приклад (ДД).

Цикл з постумовою - цикл, в якому умова перевіряється після виконання тіла циклу.

Що таке циклічна структура?

Циклічна структура - організується для багаторазового виконання однієї тієї ж операції або групи операцій..

Визначення циклічного алгоритму, приклад(БС).

Циклічний алгоритм - це алгоритм, який організується для багаторазового виконання однієї тієї ж операції або групи операцій.

Що таке черга. Приклади з реального життя. Операції над чергою.

Черга - лінійна структура даних, робота з якою відбувається по принципу «перший прийшов - перший вийшов». FIFO - first-in, first-out. Приклад з життя: черги в магазинах, в лікарні, в банках. Операції над чергою: 1. Запитів немає. 2. Модифікаціїї а) INSERT (вставка) - ENQUEUE, б) DELETE (видалення) - DEQUEUE.

Опис за допомогою блок-схем (БС), основні блоки

• Овал - початок або кінець • Прямокутник - функціональний блок • Паралелограм - введення/виведення • Ромб - блок перевірки умови (передача керування по одній з двох залежних віток, залежно від перевірки початкової умови) • Прямокутник без верхньої сторони - об'єднуючий блок • Прямокутник з двома лініями з боків- виклик процедури/функції


Ensembles d'études connexes

Chapter 30: Vulnerable Populations

View Set

Care of Patients with Problems of the Central Nervous System: The Spinal Cord

View Set

Life and Health: Life Insurance Policy Provisions, Options, and Riders Pt. 2

View Set

Psychology Final #2: Chapters 13, 14, 16, 7, 8

View Set

Evaluate the extent to which Congress is a representative institution

View Set