Автор: Пользователь скрыл имя, 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
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.stringGrid1.Cells[
end;
end;
procedure get_data;
var i:integer;
begin
for i:=1 to N do
begin
if
Form1.StringGrid1.Cells[i-1,0]
try
A[i]:=strtoint(Form1.
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:=
bitbtn1.Visible:=true;
stringGrid1.ColCount:=n;
stringGrid1.RowCount:=1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Height:=120;
end; end
Список використаної літератури
і