Автор: Пользователь скрыл имя, 24 Февраля 2013 в 10:04, курсовая работа
ЗАДАНИЕ: Упорядочить массив чисел в диапазоне от 1 до 100000 по убыванию и возрастанию методом сортировки простых вставок.
ЦЕЛЬ РАБОТЫ: разработать блок-схему алгоритма метода сортировки простыми вставками, создать схему программы, составить и протестировать программу на языке высокого уровня Delphi, получить результаты сортировки времени и скорости в зависимости от количества вводимых символов, построить графики зависимости в промежутках: [1 … 300], [300 … 5 000], [5 000 ... 10 000]
1. ОПИСАНИЕ ПЕРЕМЕННЫХ И ПРОЦЕДУР 2
2. ВВЕДЕНИЕ 3
3. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
Сортировка простыми вставками 6
Метод последовательного поиска в упорядоченной таблице 8
4. ПРАКТИЧЕСКАЯ ЧАСТЬ 9
5. ЛИСТИНГ ПРОГРАММЫ 14
6. ИНТЕРФЕЙС ПРОГРАММЫ 17
7. ТАБЛИЦЫ РЕЗУЛЬТАТОВ 18
8. ЗАКЛЮЧЕНИЕ 21
var
i,j,x,k : Integer;
str: AnsiString;
begin
x := StrToInt(Form1.edt4.Text);
k:=0;
i:=1;
while((i<=count) and (x>=a[i])) do
begin
if(x=a[i])then begin k:=k+1; str:=str+' '+IntToStr(i); end;
i:=i+1;
end;
if(k=0)then str :='Нет такого элемента';
Form1.edt7.Text:=IntToStr(k);
Result:= str;
end;
function FindDec(a:array of Integer):AnsiString;
var
i,j,x,k : Integer;
str: AnsiString;
begin
x := StrToInt(Form1.edt4.Text);
k:=0;
i:=1;
while((i<=count) and (x<=a[i])) do
begin
if(x=a[i])then begin k:=k+1; str:=str+' '+IntToStr(i); end;
i:=i+1;
end;
Form1.edt7.Text:=IntToStr(k);
if(k=0)then str :='Нет такого элемента';
Result:= str;
end;
procedure TForm1.btn1Click(Sender: TObject);
var range,i:Integer;
a:array of Integer;
d1: TDateTime;
begin
if((Length(edt1.Text)>0) and (Length(edt2.Text)>0)) then
begin
count := StrToInt(edt1.Text);
range := StrToInt(edt2.Text);
btn2.Enabled:=True;
SetLength(a,count+1);
Randomize;
strngrd1.ColCount := count;
strngrd2.ColCount := count;
strngrd3.ColCount := count;
for i := 1 to count do strngrd1.Cells[i-1,0] := IntToStr(Random(range));
for i := 1 to count do a[i]:= StrToInt(strngrd1.Cells[i-1,0]
d1:=Now;
SortToInc(a);
SortToDec(a);
edt3.Text:=FloatToStr(
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
i :Integer;
a:array of Integer;
d1: TDateTime;
begin
if(Length(edt4.Text)>0)then
begin
SetLength(a,count+1);
for i := 1 to count do a[i]:= StrToInt(strngrd2.Cells[i-1,0]
d1:=Now;
edt5.Text:=FindInc(a);
for i := 1 to count do a[i]:= StrToInt(strngrd3.Cells[i-1,0]
edt8.Text:=FloatToStr(
edt6.Text:=FindDec(a);
end;
end;
end.
1) 10 – 300 элементов:
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
2) 300-5000 элементов
Кол. Элементов |
время |
скорость |
300 |
0,48 |
625 |
1100 |
1,6 |
687,5 |
2000 |
3,1 |
645,1612903 |
2900 |
4,7 |
617,0212766 |
3800 |
5,6 |
678,5714286 |
4700 |
6,3 |
746,031746 |
5000 |
7,8 |
641,025641 |
3) 5000-10000 элементов
Кол. Элементов |
время |
скорость |
5000 |
7,8 |
641,025641 |
5900 |
9,4 |
627,6595745 |
6800 |
10,1 |
673,2673267 |
7700 |
13,9 |
553,9568345 |
8600 |
15,6 |
551,2820513 |
9500 |
20,3 |
467,9802956 |
10000 |
23,4 |
427,3504274 |
Важным свойством алгоритма является его сфера применения. Здесь основных позиций две:
Данный класс алгоритмов делится на два основных подкласса:
Внутренняя сортировка оперирует с массивами, целиком, умещающимися в оперативной памяти с произвольным доступом к любой ячейке. Данные обычно сортируются на том же месте, без дополнительных затрат.
Внешняя сортировка оперирует с запоминающими устройствами большого объема, но с доступом не произвольным, а последовательным (сортировка файлов), т.е. в данный момент только один элемент, а затраты на перемотку по сравнению с памятью неоправданно велики. Это приводит к специальным методам сортировки, обычно использующим дополнительное дисковое пространство.
При решении задачи сортировки обычно выдвигается требование минимального использования дополнительной памяти, из которого вытекает недопустимость применения дополнительных массивов.
Для оценки быстродействия алгоритмов различных методов сортировки, как правило, используют два показателя:
количество присваиваний;
количество сравнений.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Кнут Д.Э. Искусство программирования, том 3. Сортировка и поиск, 2-е изд.: Пер с англ. – М.: Издательский дом “Вильямс”, 2001. – 832 с.: ил.
2. Марков А.С., Милов М.П.., Пеледов Г.В.: Программное обеспечение ЭВМ.кн.11, 1995. -356 с.: ил.
3. Фаронов В.В. Турбо-Паскаль (в 3 книгах). - М.: "МВТУ-ФЕСТО ДИДАКТИК", 1992-1993.
4. Прайс Д. Программирование
на языке Паскаль: