Автор работы: Пользователь скрыл имя, 14 Декабря 2010 в 12:17, курсовая работа
Целью данной курсовой работы является исследование одной из важных разновидностей деревьев – пирамиды.
Для достижения данной цели нужно выполнить следующие задачи:
1.раскрыть понятие дерева;
2.охарактеризовать бинарные (двоичные) деревья;
3.ввести понятие пирамиды;
4.изучить способы реализации пирамиды;
5.реализовать сортировку на основе пирамиды.
Объектом являются нелинейные структуры данных. Предметом исследования курсовой работы выступает одна из разновидностей двоичных деревьев – пирамида.
Введение 5
1 Динамическая структура данных «Дерево» 6
1.1 Деревья 6
1.1.1 Определение. Основные понятия 6
1.1.2 Классификация деревьев 7
1.2 Двоичные деревья 8
1.2.1 Определение. Основные понятия 8
1.2.2 Программная реализация 8
1.2.3 Основные операции (алгоритмы) 9
1.3 Пирамида 10
1.3.1 Определение. Основные понятия 10
1.3.2 Сортировка на основе пирамиды 11
2 Реализация прикладной задачи с использованием пирамиды 13
2.1 Постановка задачи 13
2.2 Алгоритм решения задачи 13
2.3 Описание программных средств 13
2.3.1 Описание переменных 13
2.4 Описание процедур и функций и их значения 13
2.5 Входная и выходная информация 14
2.5.1 Входная информация 14
2.5.2 Выходная информация 14
2.6 Руководство пользователя 15
2.7 Технология разработки программного средства 15
2.7.1 Технология разработки программы 15
2.7.2 Описание процесса отладки и испытания программы 15
Заключение 17
Список используемой литературы 18
Приложение А (обязательное) (блок - схема задачи)……………………………………………......19
Приложение B (обязательное) Листинг программы.………………………………………………....24
- сбор сведений о поставленной задаче
- выбор
реализуемого в программе
- определение структуры и типов данных
- написание на выбранном языке алгоритма
- отладка и тестирование
- сдача
программы
2.7.2 Описание процесса отладки и испытания программы
Процесс
отладки сопровождал написание
каждой строчки программного кода.
Благодаря чему программе не потребовалось
существенных переработок кода после
каждого выявления случаев
Порядок испытаний проходил в следующем порядке:
- поиск и отладка синтаксических ошибок;
-
корректность расчетов
-
корректность отображения
Корректность
расчетов, проводимых в программе, проверялась
путем расчета исходных данных, вначале
вручную, а затем с помощью программы.
После чего сравнивались результаты.
Заключение
В данной курсовой работе была исследована одна из разновидностей деревьев – пирамида. Также были достигнуты следующие цели: было раскрыто понятие дерева, охарактеризованы бинарные (двоичные), деревья, выведено понятие пирамиды, рассмотренна подробно пирамидальная сортировка, и, также, были изучены способы реализации пирамиды на практике.
Данная
программа предназначена для
сортировки массива чисел по принципу
пирамидальной сортировки. Программа
по реализации не сложна, с ней может работать
как опытный, так и начинающий пользователь.
За время выполнения курсовой работы были
укреплены знания, в среде программирования
Turbo Pascal.
Список используемой
литературы
1. Ахо А., Хопкрофт Дж., Ульман Дж, Структуры данных и алгоритмы. – М:Мир, 2000 – 256 с.
2. Дональд Э. Кнут, Глава 2.3. Деревья. – Искусство программирования. — М.: Вильямс, 2000 — 832 с.
3. Кормен Т, Пирамидальная сортировка. – М:Мир, 2000 – 390 с.
4. Окулов С.М, Основы Программирования. – ММир, 1998 – 256 с.
5.httr://www.wikipedia.ru/
6.
httr://www.codelab.ru/t/
7.
httr://www..rsdn.ru/
Приложение А
(обязательное)
(блок – схема задачи)
Приложение B
(обязательное)
Листинг
программы
Рrogram Heap;
uses
crt;
const
MaxN = 1000;
var
a: array[1..MaxN] of LongInt;
n, hs, i: LongInt;
procedure swap(var x, y: LongInt);
var z: LongInt;
begin
z := x; x := y; y := z;
end;
procedure pushdown(j: LongInt);
var max: LongInt;
begin
if (2*j <= hs) and (a[j] < a[2*j])
then max := 2*j
else max := j;
if (2*j+1 <= hs) and (a[max] < a[2*j+1])
then max := 2*j+1;
if max <> j then begin
swap(a[max], a[j]);
pushdown(max)
end
end;
procedure heapsort;
begin
hs := n;
for i := n div 2 downto 1 do
pushdown(i);
for i := n downto 2 do
begin
swap(a[1], a[i]);
dec(hs);
pushdown(1)
end
end;
procedure input;
begin
repeat
writeln('Введите количество
readln(n);
until n <
MaxN;
writeln('Введите элементы исходного массива: ');
for i := 1 to n do
readln(a[i]);
end;
procedure output;
begin
writeln('Отсортированный массив: ');
for i := 1 to n do
write(a[i], ' ');
end;
begin
clrscr;
input;
heapsort;
output;
readln;
end.