Алгоритмы сортировки
Автор: Gloomy Camomile • Январь 21, 2020 • Курсовая работа • 290 Слов (2 Страниц) • 381 Просмотры
Курсовая работа
На тему: «Алгоритмы сортировки»
Выполнила:
Студентка гр. 2101
Баланина Ю.В.
Проверил:
Тюрин И.С.
_________________________
Введение
Алгоритм сортировки — это алгоритм для упорядочивания элементов в списке. В случае, когда элемент списка имеет несколько полей, поле, служащее критерием порядка, называется ключом сортировки. На практике в качестве ключа часто выступает число, а в остальных полях хранятся какие-либо данные, никак не влияющие на работу алгоритма.
Описание алгоритма
Группа | Алгоритм | Время для задания в секундах | |
Баланина Юлия Владимировна | Sorting/Counting sort | 39 |
Сортировка подсчётом (counting sort) — алгоритм сортировки, в котором используется диапазон чисел сортируемого массива (списка) для подсчёта совпадающих элементов. Применение сортировки подсчётом целесообразно лишь тогда, когда сортируемые числа имеют диапазон возможных значений, который достаточно мал по сравнению с сортируемым множеством.
Принцип работы алгоритма: создается массив, размер которого равен диапазону значений сортируемого массива, где каждая позиция будет хранить количество элементов соответствующего значения в первоначальном массиве (первоначально все элементы вспомогательного массива равны нулю). После окончания пересчета элементов сортируемого массива, путем цикла, выводятся значения диапазона значений в порядке возрастания столько раз, сколько они встретились в сортируемом массиве. Значения, которые в сортируемом массиве не встретились (соответствующие им счетчики остались равны нулю), при выводе пропускаются.
Листинг программы
mycode = '''
import timeit
import random
a=[]
n=10
for i in range(n):
a.append(random.randint(0,9))
count=[0]*10
for i in a:
count[i]+=1
for i in range(10):
if count[i]>0:
print((str(i)+" ")*count[i],end="")
'''
print(timeit.timeit(stmt = mycode, number = 1))
Тестирование
В данной работе использован диапазон значений [0;9].
- Тестирование алгоритма сортировки без учета времени, количество элементов массива n=10:
[pic 1]
Вывод: алгоритм работает
- Тестирование алгоритма с учетом времени, n=10:
Для анализа алгоритма использованы функции встроенного модуля timeit, который импортируется в начале работы программы.
[pic 2]
График результатов:
n | time |
10 | 0.000823 |
100 | 0.002625 |
1000 | 0.025221 |
5000 | 0.091002 |
10000 | 0.287533 |
25000 | 0.794206 |
50000 | 1.925916 |
100000 | 2.359639 |
250000 | 5.507514 |
500000 | 10.32019 |
750000 | 14.54076 |
1000000 | 21.96875 |
1500000 | 21.36022 |
2000000 | 27.20434 |
2250000 | 32.34576 |
2400000 | 37.08067 |
2500000 | 34.85948 |
2750000 | 38.4903 |
3000000 | 44.65442 |
5000000 | 65.91273 |
[pic 3]
Согласно полученным результатам, приближенное максимальное количество элементов при заданном максимальном времени выполнения (39 секунд) ––– n=2 750 000.
Заключение
Исходя из полученных данных, рост затраченного на сортировку времени растет линейно с возрастанием количества элементов массива.
...