Как стать автором
Обновить

Комментарии 17

Изучите уже базовые правила русского языка, а то даже заголовок статьи содержит ошибку.

очень похоже на рекламу библиотеки отрисовки графиков:

import matplotlib

вы бы тогда рассказали где ее взяли, с чем ее едят какие у нее возможности, было бы намного интереснее

pip install -U 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% случаев этого будет достаточно.

Но на практике в большинстве случаев используют алгоритм сортировки из стандартной библиотеки, и это скорее всего будет какая-то гибридная сортировка: Timsort, Introsort, Powersort. То есть чистого квиксорта всё-таки недостаточно.

Так может преподаватель для отчета по лабе требует на хабр выложить)) Регулярно нет-нет да появляются такие "лабораторные"

Если первый больше второго — меняем их местами с первым

Возможно, стоило заранее указать, что сортировка производится по возрастанию.

Изучение базовые правила русского языка

такая реализация сортировки Хоара на специально подобранных данных будет иметь асимптотику O(n²)

Я немного переделал статью, но код оставил, так как код выполняет и сортировку, и вычисляет время работы, и выводит графики.

Наверное, можно добавить ещё такие алгоритмы как: обезьянья сортировка О(n×n!) и сортировка Сталина О(n)

У вас там не сортировка пузырьком, а каким-то выбором. В пузырьке меняются соседние элементы. Именно поэтому она - "пузырьковая", большие элементы "всплывают" вверх, как пузырьки. Вы же ищите среди элементов с i до n минимальный, всегда обменивая элементы с i-ым.

Если вникнуть в текст, то видно, что мы проходим по массиву по такому принципу: сравниваем, идем дальше, и так по кругу.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации