Пірамідальне сортування

Автор: Пользователь скрыл имя, 11 Января 2012 в 17:13, курсовая работа

Краткое описание

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

Найбільш поширеним видом сортування є впорядкування масиву.

Задача сортування полягає в перестановці елементів послідовності в визначеному порядку. Впорядкування здійснюється в процесі багаторазового перегляду вхідного масиву. Методи сортування діляться на два класи :
Внутрішнє сортування, коли працюють з даними в оперативній пам’яті з довільним доступом;
Зовнішнє сортування , коли впорядковують інформацію, розташовану на зовнішніх носіях.

Оглавление

1. Постановка задачі………………………………………………….2

2. Теоретичні відомості………………………………………………2

3. Вхідні – вихідні дані……………………………………………….3

4. Математичний розв’язок…………………………………………..3

5. Схема алгоритму сортування……………………………………...5

5.1. Алгоритм процедури введення даних…………………………….6

5.2. Алгоритм процедури виведення результатів сортування…..6

5.3. Алгоритм процедури побудови дерева…………………………..7

5.4. Алгоритм процедури перестановки елементів………………..7

5.5. Алгоритм процедури «вирішення сімейного конфлікту»……8

11. Контрольний приклад для масиву з 20 елементів………………9

11.1 Побудова піраміди…………………………………………………..9

11.2 Сортування…………………………………………………………..14

14. Опис використаних в реалізації методу процедур та функцій...34

15. Користувацьке вікно ( форма )…………………………………..35

16. Текст програми……………………………………………………36

17. Список використаної літератури…………………………………40

Файлы: 1 файл

Курсова_Алогритми2.doc

— 577.50 Кб (Скачать)

     4. Якщо A[i] - вузол дерева та i > 1, то A[i mod 2] - вузол - “батько” вузла A[i].

     Процедура Show_result

     Procedure Show_result

     Виводить  в циклі елементи відсортованого масиву на екран.

     Процедура get_data

     Procedure get_data

     Зчитує  значення елементів масиву для сортування.

     Користувацьке вікно ( форма )

 
 

 

     Текст програми 

     var

     Form1: TForm1;

     A:array[1..20] of real;

     N,k:integer; 

     implementation 

     Procedure Swap(i, j : Integer);

     Var b : Real;

     Begin

     If a[i] < a[j] then

     begin

     b := a[i];

     a[i] := a[j];

     a[j] := b

     end

     End; 

     Procedure Conflict(i, k : Integer);

     Var j : Integer;

     Begin

     j := 2*i;

     If j = k then

     Swap(i, j)

     else

     if j < k then

     begin

     if a[j+1] > a[j] then

     j := j + 1;

     Swap(i, j);

     Conflict(j, k)

     End End; 

     Procedure SortTree(i : Integer);

     begin

     If i <= n div 2 then

     begin

     SortTree(2*i);

     SortTree(2*i+1);

     Conflict(i, n)

     end

     end; 

     procedure Show_result;

     var i:integer;

     begin

     Form1.label1.Caption:='';

     for i:=1 to N do

     begin

     Form1.Label1.Caption:=Form1.Label1.Caption+' '+floattostr(A[i]);

     Form1.stringGrid1.Cells[i-1,0]:=floattostr(A[i]);

     end; end; 

     procedure get_data;

     var i:integer;

     begin

     for i:=1 to N do

     begin

     if Form1.StringGrid1.Cells[i-1,0]<>'' then

     try

     A[i]:=strtoint(Form1.StringGrid1.Cells[i-1,0])

     except on EConvertError do showmessage('Недопустимий формат даних ! Присвоєно значення "0"'); end

     else

     showmessage('Знайдено пусте поле ! Присвоєно значення "0"');

     end;

     end; 

     procedure TForm1.BitBtn1Click(Sender: TObject);

     var i:integer;

     begin

     get_data;

     Label1.Caption:='';

     Label1.Enabled:=true;

     SortTree(1);

     For k := n downto 2 do

     begin

     Swap(k, 1);

     Conflict(1, k - 1) end;

     show_result; end; 

     procedure TForm1.Button1Click(Sender: TObject);

     begin

     try

     N:=strtoint(edit1.Text);

     except on EConvertError do

     edit1.Clear end;

     Form1.Height:=250;

     label1.visible:=true;

     stringGrid1.Visible:=true;

     bitbtn1.Visible:=true;

     stringGrid1.ColCount:=n;

     stringGrid1.RowCount:=1;

     end; 

     procedure TForm1.FormCreate(Sender: TObject);

     begin

     Form1.Height:=120; end; end 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Список  використаної літератури

  1. Джулиан Бакнелл «Фундаментальные алгоритмы и структуры данных в Delphi.»  - «Питер» 2006 , 557 с.
  2. Архангельский А.Я. «Приемы программирования в Delphi.» - «Binom» 2004 , 846 с.
  3. Дарахвелидзе П.Г., Марков Е.П. «Программирование в Delphi 7» - «BHV-СПб» 2003 , 784 с.
 
 
 
 

     і

Информация о работе Пірамідальне сортування