DonOutcast / Algorithms_Python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Algorithms_Python

Quadratic sorts

Название Лучшее время Среднее время Худшее время Память
Сортировака пузырьком
(Bubble Sort)
O(n) On(n^2) O(n^2) O(1)
Сортировака выбором
(Bubble Sort)
O(n^2) On(n^2) O(n^2) O(1)
  • Асмиптотика O(n^2^)
  • Редко применяются на практике
  • Ваожно знать, чтобы понимать приципы работы

Bubble Sort

Название Лучшее время Среднее время Худшее время Память
Сортировака пузырьком
(Bubble Sort)
O(n) On(n^2) O(n^2) O(1)
  • Каждый раз будем смещать самый "тяжелый" элимент в конец
    • Для всех i от 1 до n - 1, если ai > ai + 1 обмениваем их местами
    • Для одного элемента в худшем слачае n обменов
    • Для n элементов n^2
def bubble_sort(m_list: list) -> list:
    n = len(m_list)
    for i in range(n):
        already_stoped = True:
    for j in range(n - i - 1):
        if m_list[j] > m_list[j + 1]:
            m_list[j], m_list[j + 1] = m_list[j + 1], m_list[j]
            alredy_stoped = False
        if already_stoped:
            break
    return m_list

Selection Sort

Название Лучшее время Среднее время Худшее время Память
Сортировака выбором
(Bubble Sort)
O(n^2) On(n^2) O(n^2) O(1)

Сортировка выбором — также простой алгоритм, но более эффективный по сравнению с пузырьковой сортировкой. В большинстве случаев сортировка выбором будет более удачным выбором из двух.

В этом алгоритме список (или массив) делится на две части: список с отсортированными элементами и список с элементами, которые только нужно сортировать. Сначала ищется самый маленький элемент во втором. Он добавляется в конце первого. Таким образом алгоритм постепенно формирует список от меньшего к большему. Так происходит до тех пор, пока не будет готовый отсортированный массив.

  • Каждый раз будем будем находить наименьший элимент
    • Для всех i от 0 до n - 1, если aj > aminimum то minimum будет равен j
    • Для n элементов n^2
def selection_sort(m_list: list) -> list:
    n = len(m_list)
    for i in range(n):
        minimum = i:
        for j in range(i + 1, n):
            if m_list[j] > m_list[minimum]:
                minumum = j
        m_list[i], m_list[minimum] = m_list[minimum], m_list[i]
    return m_list

About


Languages

Language:Python 85.1%Language:Cython 14.9%