Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Алгоритма и программы решения задач комбинаторики. Алгоритм «Быстрой сортировки»

Автор:   •  Апрель 26, 2022  •  Лабораторная работа  •  363 Слов (2 Страниц)  •  229 Просмотры

Страница 1 из 2

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра радиотехнической электроники

ОТЧЕТ

по лабораторной работе №4

по дисциплине «Информационные технологии»

Тема: Алгоритма и программы решения задач комбинаторики. Алгоритм «Быстрой сортировки»

Студент гр. 1207

Бачевский И.М.

Преподаватель

Сосунов А.М.

Санкт-Петербург

2022


Цель работы: изучение и программирование стандартного алгоритма сортировки «быстрой сортировки».

Приведенная блок-схема алгоритма сортировки вставкой:

[pic 1]

Рис. 1 – блок-схема, данная на этапе постановки задачи.

Код программы, написанной по данной блок-схеме, сортирующая вектор по возрастанию с помощью алгоритма сортировки вставкой:

global cm;

cm = 0;

n=input('длина вектора s');

s = randi([0 n*10], 1, n);%вектор длины n заполняется случайными числами в заданном диапазоне

disp('вектор-')

disp(s);

tic

y = quicksort(s);%вызов функции

toc

disp('отсортированный вектор-')

disp(y);

disp('кол-во раз, которые была вызвана функция')

disp(cm);

function[vector] = quicksort(vector)%функция для быстрой сортировки

global cm;

cm = cm + 1;

if length(vector)<2

    return;

end

pivot = vector(1);%сам алгоритм "быстрой сортировки"

A1 = quicksort(vector(vector<pivot));

A2 = vector(vector==pivot);

A3 = quicksort(vector(vector>pivot));

vector = [A1 A2 A3];

end

Листинг результатов:

Задайте длину вектора 10

    59    78    39    61    24    29     1    35    14    41

Elapsed time is 0.004574 seconds.

Остортированный вектор s: 1  14  24  29  35  39  41  59  61  78

Функция быстрой сортировки была вызвана 13 раз

Рис. 2 – листинг результатов выполненной программы, сортирующей вектор по возрастанию.

Получим график зависимости количества вызовов функции от размера вектора n:

[pic 2]

Рис. 4 – график зависимости количества вызовов функции от размера веткора n

Изучим зависимость времени работы программы (t) и количества вызовов программы (m) от длины заданного вектора (N):

i

N

t, сек

cm

1

10000 (104)

0,085769

6413

2

100000  (105)

0,685387

64209

3

1000000 (106)

4,902451

642251

4

10000000 (107)

54,755389

6423220

i – j

KN

Kt

Kcm

1 – 2

10

6,11

10

2 – 3

10

8,03

10

3 – 4

10

11,22

10

2 – 4

100

90,12

100

1 – 3

100

49,10

100

1 – 4

1000

550,86

1002

...

Скачать:   txt (4.9 Kb)   pdf (221.8 Kb)   docx (112.1 Kb)  
Продолжить читать еще 1 страницу »
Доступно только на Essays.club