Комментарии 17
Изучите уже базовые правила русского языка, а то даже заголовок статьи содержит ошибку.
очень похоже на рекламу библиотеки отрисовки графиков:
import matplotlib
вы бы тогда рассказали где ее взяли, с чем ее едят какие у нее возможности, было бы намного интереснее
Здесь я заметил типичную теорию, которую дают преподаватели в наших учебных учерждениях. Эти люди, как правило, никогда дело не имели с реальной практикой и заучили какие-то алгоритмы криво и это преподают, т.к. в реальный сектор IT их или не взяли, или они сами не захотели туда идти.
Сортировка пузырьком
У ВАС:
# Пузырьковая сортировка
def sort_array(arr):
for i in range(len(arr)):
for j in range(i + 1, len(arr)):
if arr[j] <= arr[i]:
continue
arr[i], arr[j] = arr[j], arr[i]
А давайте запишем этот алгоритм таким образом:
def sort_array(arr):
n = len(arr)
for bypass in range(1, n):
for i in range(n-bypass):
if arr[i] > arr[i+1]:
arr[i], arr[i+1] = arr[i+1], arr[i]
Так он намного симпатичнее выглядит
Сортировка вставкой
# Сортировка вставками
def sort_array(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
Ухх, давайте намного проще запишем:
def sort_array(arr):
n = len(arr)
for top in range(1, n):
i = top
while i > 0 and arr[i-1] > arr[i]:
arr[i], arr[i-1] = arr[i-1], arr[i]
i -= 1
Еще очень большое сомнение вызывает, что у random не установлен seed - если, например, брать сортировку подсчётом, то это очень критично - там разброс чисел (диапазон) имеет решающее значение
Я аналогичное в 10м классе написал помнится, ещё на паскале - но это было давно. В качестве статьи для хабра в 2024-м году, извините за прямоту, смотрится как-то странно. Это достаточно общеизвестные вещи поэтому дальше занятий их наверное лучше не выносить :)
ну почему не для Хабра? На собеседовании любят это спросить, это база. Почему бы не освежить базу в голове
Ок, вы освежили? Ну тогда основываясь данными из этой статьи скажите, пожалуйста, в каких случаях, например, имеет смысл применять пузырек? Расскажите как работают наиболее популярные сортировки - quicksort и mergesort, а то они только на графиках есть. Какую сортировку из предложенных мне стоит выбрать если надо отсортировать данные не помещаемые в память? Какие хорошо параллелятся? Где вообще использются сортировки, рассмотренные в статье?
дополнение: Хм, интересно, что грубово вы увидели в этом сообщении? Вроде-бы вежливо задал именно, что практические вопросы, ответы на которые пригодятся в решении реальных задач и вообще важны для понимания сорировок, да и для интервью, наверное, тоже (еслиб я спрашивал на интервью про сортировки, спросил-бы именно про quicksort и mergesort). В статье озаглавленной "известные алгоритмы сортировок" не упоминаются наиболее популярные сортировки, этот как? Зачем рассматривать разные алгоритмы без рассмотрения области их применения? Берем квиксорт и используем везде, в 99.9% случаев этого будет достаточно.
Так может преподаватель для отчета по лабе требует на хабр выложить)) Регулярно нет-нет да появляются такие "лабораторные"
Если первый больше второго — меняем их местами с первым
Возможно, стоило заранее указать, что сортировка производится по возрастанию.
Изучение базовые правила русского языка
такая реализация сортировки Хоара на специально подобранных данных будет иметь асимптотику O(n²)
Я немного переделал статью, но код оставил, так как код выполняет и сортировку, и вычисляет время работы, и выводит графики.
Наверное, можно добавить ещё такие алгоритмы как: обезьянья сортировка О(n×n!) и сортировка Сталина О(n)
У вас там не сортировка пузырьком, а каким-то выбором. В пузырьке меняются соседние элементы. Именно поэтому она - "пузырьковая", большие элементы "всплывают" вверх, как пузырьки. Вы же ищите среди элементов с i до n минимальный, всегда обменивая элементы с i-ым.
Изучение различных видов сортировок