Автор: Пользователь скрыл имя, 11 Ноября 2011 в 01:28, курсовая работа
ЗАДАНИЕ: Упорядочить массив чисел в диапазоне от 1 до 100000 по убыванию и возрастанию методом сортировки посредством вставок и слияния.
ЦЕЛЬ РАБОТЫ: разработать блок-схему алгоритма метода сортировки посредством вставок и слияния, создать схему программы, составить и протестировать программу на языке высокого уровня Delphi, получить результаты сортировки времени и скорости в зависимости от количества вводимых символов, построить графики зависимости в промежутках: [1 … 300], [300 … 5 000], [5 000 ... 10 000
1.Содержание
1.Содержание курсового проекта……………………………….2
2.Введение………………………………………………………..5
3.Теоретическая часть……………………………………………6
3.1.Сортировка посредством вставок и слияния…………..6
3.2. Алгоритм поиска.Бинарные атрибуты…………………9
4.Практическая часть……………………………………………12
4.1. Блок схема алгоритма сортировки массива чисел посредством
вставок и слияния простых вставок………………………………12
4.2. Схема программы сортировки массива чисел посредством встевок
и слияния……………………………………………………………14
4.3. Блок схема алгоритма поиска через бинарные атрибуты
заданного образца в упорядоченном массиве……………16
4.4. Схема программы поиска через бинарные атрибуты
заданного образца в упорядоченном массиве……………18
4.5. Описание алгоритма задания элементов массива……….20
4.6. Текст программы, выполняющей сортировку массива
символов способом простых вставок …………………………..21
4.7. Описание интерфейса программы……………………………33
4.8. Таблицы результатов времени и скорости от количества
символов;…………………………………………………..34
4.9. Графики зависимостей времени и скорости от количества
чисел…………………………………..……………………36
5.Заключение………………………………………………………39
6.Список используемой литературы……………………………..40
flag1 := false; // пока нет ни одного найденного элемента
for i := 0 to length(a)-1 do
begin
j := 0;
flag := true;
while (j <= 15) and (flag = true) do
begin
if bin_mas[i,j] = bin_num[j] then
flag := true
else
flag := false;
inc(j);
end;
if flag = true then
begin
s := s + IntToStr(i) + ',';
//Label10.Caption := 'Искомый элемент найден, его номер - '+ IntToStr(i);
flag1 := true; // найден один соответствующий элемент
end;
if flag1 = false then
Memo1.Text := 'Заданный образец не найден';
end;
if flag1 = true then
begin
Label10.Caption := 'Номера элементов: ';
Memo1.Text := s;
end;
//**************Поиск
для массива по убыванию*******
s := '';
flag1 := false; // пока нет ни одного найденного элемента
for i := 0 to length(a)-1 do
begin
j := 0;
flag := true;
while (j <= 15) and (flag = true) do
begin
if bin_mas1[i,j] = bin_num[j] then
flag := true
else
flag := false;
inc(j);
end;
if flag = true then
begin
s := s + IntToStr(i) + ',';
//Label10.Caption := 'Искомый элемент найден, его номер - '+ IntToStr(i);
flag1 := true; // найден один соответствующий элемент
end;
if flag1 = false then
Memo2.Text := 'Заданный образец не найден';
end;
if flag1 = true then
begin
Label4.Caption := 'Номера элементов: ';
Memo2.Text := s;
end;
time2 := GetTickCount;
Label5.Caption := IntToStr(time2-time1)+ 'ms';
end;
end.
4.7 Описание интерфейса программы:
1. Заголовок формы.
2. Диапазон задания исходного массива чисел.
3. Кнопка для получения исходного массива.
4. Исходный массив.
5. Кнопка для упорядочевания массива по возрастанию.
6. Упорядоченный массив по возрастанию.
7. Кнопка для упорядочевания массива по убыванию.
8. Упорядоченный массив по убыванию.
9. Кнопка управления для выполнения поисковой операции образца в массиве 10. Поле редактирования для ввода образца – поискового элемента в
массиве.
11. Поле редактирования для вывода результата поисковой операции образца
в упорядоченном по возрастанию массива чисел.
12. Поле редактирования для вывода результата поисковой операции образца в
упорядоченном по убыванию массива чисел.
13. Время заданной
сортировки,поиска образца.
4.8 Таблицы
результатов времени
и скорости от количества
символов;
Таблица результатов (до 300 символов): | |||||||||||||||||||||
s,сим | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | |||||||||||
t, мс | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | |||||||||||
v=s/t, | 49,75 | 99,5 | 149,25 | 199 | 248,76 | 298,51 | 348,26 | 398,01 | 447,76 | 497,51 | |||||||||||
сим/мс | |||||||||||||||||||||
s,сим | 110 | 120 | 130 | 140 | 150 | 160 | 170 | 180 | 190 | 200 | |||||||||||
t, мс | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | |||||||||||
v=s/t,
сим/мс |
547,3 | 597 | 646,77 | 696,52 | 746,27 | 796,02 | 845,77 | 895,52 | 945,27 | 995,02 | |||||||||||
s,сим | 210 | 220 | 230 | 240 | 250 | 260 | 270 | 280 | 290 | 300 | |||||||||||
t, мс | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | 0,201 | |||||||||||
v=s/t, | 1045 | 1095 | 1144,3 | 1194 | 1243,8 | 1293,5 | 1343,3 | 1393 | 1442,8 | 1492,5 | |||||||||||
сим/мс | |||||||||||||||||||||
Таблица результатов (от 300 до 5000 символов): | |||||||||||||||||||||
s,сим | 300 | 500 | 700 | 900 | 1100 | 1300 | 1500 | 1700 | 1900 | 2100 | |||||||||||
t, мс | 0,541 | 0,541 | 0,561 | 0,561 | 0,561 | 0,561 | 0,561 | 0,561 | 0,561 | 0,561 | |||||||||||
v=s/t, | 554,5 | 924,2 | 1247,7 | 1604,2 | 1960,7 | 2317,2 | 2673,7 | 3030,3 | 3386,8 | 3743,3 | |||||||||||
сим/мс | |||||||||||||||||||||
s,сим | 2300 | 2500 | 2700 | 2900 | 3100 | 3300 | 3500 | 3700 | 3900 | 4100 | |||||||||||
t, мс | 0,571 | 0,571 | 0,581 | 0,581 | 0,581 | 0,581 | 0,581 | 0,581 | 0,581 | 0,581 | |||||||||||
v=s/t, | 4028 | 4378,2 | 4647,1 | 4991,3 | 5679,8 | 6024 | 6368,3 | 6712,5 | 7056,7 | 7056,7 | |||||||||||
сим/мс |
s,сим | 4300 | 4500 | 4700 | 4900 | 5100 | |||||
t, мс | 0,620 | 0,620 | 0,620 | 0,620 | 0,620 | |||||
v=s/t, | 6935,4 | 7258 | 7580,6 | 7903,2 | 8225,8 | |||||
сим/мс | ||||||||||
Таблица результатов (от 5000 до 10000 символов): | ||||||||||
s,сим | 5100 | 5300 | 5500 | 5700 | 5900 | 6100 | 6300 | 6500 | 6700 | 6900 |
t, мс | 0,785 | 0,785 | 0,785 | 0,786 | 0,786 | 0,795 | 0,795 | 0,850 | 0,850 | 0,850 |
v=s/t,
сим/мс |
6496,8 | 6751,5 | 7006,3 | 7251,9 | 7421,3 | 7672,9 | 7411,7 | 7647 | 7882,3 | 8117,6 |
s,сим | 7100 | 7300 | 7500 | 7700 | 7900 | 8100 | 8300 | 8500 | 8700 | 8900 |
t, мс | 0,850 | 0,850 | 0,850 | 0,900 | 0,900 | 0,900 | 0,905 | 0,903 | 0,904 | 0,905 |
v=s/t, | 8352,9 | 8588,2 | 8823,5 | 8555,5 | 8777,7 | 9000 | 9171,2 | 9413 | 9623,8 | 9834,2 |
сим/мс | ||||||||||
s,сим | 9100 | 9300 | 9500 | 9700 | 9900 | 10100 | ||||
t, мс | 0,945 | 0,945 | 0,948 | 0,944 | 0,947 | 0,962 | ||||
v=s/t, | 9629,6 | 9841,2 | 10021 | 10275,4 | 10454 | 10498,9 | ||||
сим/мс |
4.9.
Графики зависимостей
времени и скорости
от количества чисел
5. Заключение
Важным свойством алгоритма является его сфера применения. Здесь основных позиций две:
Данный класс алгоритмов делится на два основных подкласса:
Внутренняя сортировка оперирует с массивами, целиком, умещающимися в оперативной памяти с произвольным доступом к любой ячейке. Данные обычно сортируются на том же месте, без дополнительных затрат.
Внешняя сортировка оперирует с запоминающими устройствами большого объема, но с доступом не произвольным, а последовательным (сортировка файлов), т.е. в данный момент только один элемент, а затраты на перемотку по сравнению с памятью неоправданно велики. Это приводит к специальным методам сортировки, обычно использующим дополнительное дисковое пространство.
При решении задачи сортировки обычно выдвигается требование минимального использования дополнительной памяти, из которого вытекает недопустимость применения дополнительных массивов.
Для оценки быстродействия алгоритмов различных методов сортировки, как правило, используют два показателя:
количество присваиваний;
количество сравнений.
Сравним некоторые виды сортировок:
Сортировка вставкой - Очень прост, ,Быстро сортирует небольшие списки,
Очень медленно работает с большими списками.
Сортировка вставкой на основе связанного списка - Прост Быстро
Сортировка выбором - Очень прост, Быстро сортирует небольшие списки
Пузырьковая сортировка - Быстро работает для почти отсортированных
6.
Список используемых
источников