Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы и структуры данных / методичка структуры данных_задания.docx
Скачиваний:
54
Добавлен:
12.05.2015
Размер:
381.84 Кб
Скачать

Зміст

Вступ……………………………………………………………

1. Сортування……………………………………………………

1.1. Сортування масивів…………………………………………

1.1.1. Сортування простими включеннями……………………

1.1.3. Сортування простим вибором……………………………

1.1.4. Сортування простим обміном (засіб “бульбашки”)……

1.1.5. Шейкер-сортування………………………………………

1.1.6. Швидке сортування………………………………………

1.1.7. Сортування масива рядків……………………………….

1.2. Сортування файлів………………………………………….

2. Рекурсивні алгоритми ……………………………………….

2.1. Алгоритми з поверненням………………………………….

2.1.1. Шахова задача про хід коня………………………………

2.1.2. Шахова задача про вісім ферзів………………………….

3. Динамічні інформаційні структури………………………….

3.1. Динамічні змінні. Вказівники………………………………

3.1.1. Засоби створення та використання динамічних даних….

3.1.2. Проблема загублених зсилок………………………………

3.2. Рекурсивні типи даних……………………………………….

3.3. Списки……..…………………………………………………..

3.3.1. Лінійні списки……………………………………………….

3.3.2. Двозв’язні та кiльцевi списки………………………………

3.3.3. Черги і стеки…………………………………………………

3.4. Деревовидні структури……………………………………….

3.4.1. Бінарні дерева………………………………………………..

3.4.2. Ідеально збалансовані дерева……………………………….

3.4.3. Дерева пошуку……………………………………………….

3.4.4. Збалансовані дерева (АВЛ-дерева) …………………………

3.5. Б-дерева…………………………………………………………

4. Завдання до лабораторних та контрольних робіт……………….

5. Література…………….…………………………………………..

Вступ.

Дисципліна "Структура та організація даних в ЕОМ" за планом підготовки спеціалістів напряму " Комп’ютерні науки" включена до циклу професійно-орієнтованих дисциплін.

Дисциплiна викладається у третьому семестрі, що дає можливість використовувати одержанi знання, практичні навички при подальшому вивченні інших спеціальних дисциплiн, при виконаннi лабораторних завдань, курсових, бакалаврської та дипломної робiт.

Вивчення даної дисципліни здiйснюється на базі знань, одержаних студентами на першому курсі при вивченні дисципліни "Основи програмування та алгоритмічні мови", "Архітектура та функціонування ЕОМ", "Основи дискретної математики". Дисципліна "Структура та організація даних в ЕОМ" фактично є продовженням дисципліни "Основи програмування та алгоритмічні мови" на більш високому рівні. Вивчаються статичні та динамічні структури даних, різні методи сортування, рекурсивні алгоритми, рекурсивні структури даних такі як списки, дерева.

Систематичний та науковий пiдхiд до побудови програм важливий в першу чергу у випадку великих програм iз складними даними. Таким чином, методи програмування включають також i всi варiанти структу­рування даних. Зрештою програма є конкретним форму­люванням абстрактного алгоритму, заснованим на конкретних уявах i структурах даних. Рiшення про структурування даних неможливо приймати без знання алгоритму, i навпаки, структура та вибiр алгоритмiв iстотно залежить вiд структури даних, тобто будова програми i структури даних нерозривно зв’язанi мiж собою.

Автор мови Pascal – Ніклаус Вірт – професор, директор інституту інформатики Швейцарської вищої політехнічної школи, лауреат Т’юринговської премії, автор таких загальновідомих робіт угалузы програмування, як мови програмування – Ейлер, Модула, Модула-2, методика покрокового уточнення при розробці алгоритмів – вважав, що запорукою одержання хорошої програми є ретельно продумана структура даних. Саме про це свідчить назва книги Вірта “Алгоритми + структура даних = програми”, приклади програм з якої використано в даній роботі як взірець високого мистецтва програмування автора мови Pascal.

1. Сортування

Сортування – процес переставлення об’єктів множини у визначеному порядку з метою полегшення наступного пошуку елементів у відсортованій множині.

Елементи сортування є практично в усіх задачах (телефонні книги, відомості, звіти).

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

Введемо термінологію: визначимо тип елементу як

Type

item = Record

key : Integer;

…………..... {опис інших компонент}

End;

де

key – ключ, який використовується для ідентифікації запису (наприклад, порядковий номер);

опис інших компонент – усі суттєві дані про елемент.

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

1.1. Сортування масивів

Основна вимога до методів сортування — економне витрачання пам’яті, тому сортування треба виконувати in situ (на тому ж місці).

Ефективність сортування визначається її швидкодійністю. Мірою ефективності сортування є кількість необхідних порівнянь та пересилань елементів. При цьому треба пам’ятати, що пересилання займає більше часу, ніж порівняння.

Визначають три класи сортування масивів in situ:

1. Сортування простими включеннями;

2. Сортування простим вибором;

3. Сортування простим обміном.

Масив елементів типу item може бути описаний таким чином:

Const

N=20;

Type

index = 0..n;

Var a : Array [1..n] Of item;

1.1.1. Сортування простими включеннями

Алгоритм сортування:

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

For i:=2 To n Do

Begin

x:=a[i];

< вставити х на підходяще місце >

End;

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

Початкові ключі 44 55 12 42 94 18 06 67

i=2 44 55 12 42 94 18 06 67

i=3 12 44 55 42 94 18 06 67

i=4 12 42 44 55 94 18 06 67

i=5 12 42 44 55 94 18 06 67

i=6 12 18 42 44 55 94 06 67

i=7 06 12 18 42 44 55 94 67

i=8 06 12 18 42 44 55 67 94

При пошуку відповідного для елементу місця чергуються порівняння та пересилання. Елемент порівнюється з черговим та або вставляється, якщо він менше, або пересувається далі наліво, як би “просіюється”, - такий процес має назву просіювання.

Можливі два виходу з циклу:

– знайдено елемент з ключем , меншим за x, тоді х ставиться перед ним;

– досягнуто лівий кінець послідовності.

У цьому випадку застосовується заcіб фіктивного елемента (“бар’єра”).

Procedure StraightInsertion;

Var

i,j : index;

x : item;

Begin

For i:=2 To n Do

Begin

x:=a[i];

a[0]:=x; { розширити діапазон індексів в описі }

j:=i–1;

While x.key < a[j].key Do

Begin

a[j+1]:=a[j];

j:=j–1

End;

a[j+1]:=x

End

End;

Цей алгоритм описує стійке сортування (порядок елементів з однаковими ключами залишається незмінним).

Зручний для випадку частково упорядкованих елементів.

Незручний, якщо елементи знаходяться у зворотному порядку, тобто маємо випадок природної поведінки алгоритму.