Рубрики
Без рубрики

3 самых медленных алгоритмов сортировки

Жизнь коронавируса блокировки странно, это жизнь, которую мы никогда не испытывали раньше. Все … Tagged с алгоритмами, Python.

Жизнь коронавируса блокировки странно, это жизнь, которую мы никогда не испытывали раньше.

Все кажется замедленным, даже отключенным.

Как инженеры программного обеспечения, мы всегда хотели сделать нашу программу быстрее. На эти неопытные дни, давайте попробуем подумать о чем-то от противоположного угла.

Знаете ли вы, каков самый медленный алгоритм сортировки?

Давайте повеселитесь и изучаем необычный анализ сложности времени.

Богосорт (сортировка обезьяны a.k.a)

Богосорт основан на генерации и тестировании парадигмы.

while not in_order(deck):
    shuffle(deck)

Давайте реализуем этот алгоритм в Python:

import random

def bogosort(l):
    while not l == sorted(l):
        random.shuffle(l)
    return l

x = [3,2,4,7,3,6,9,1]
print bogosort(x)

Средняя сложность времени является O ((N-1) * N!), Лучший случай происходит, если заданный массив уже отсортирован.

Вы можете подумать, что худший случай нуждается в бесконечном времени.

Это правильно в теории.

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

Бесконечная теорема обезьяны заявляет, что обезьяна наводит ключи на случайном порядке на клавиатуре машинки для бесконечного количества времени, почти наверняка нанесет какой-либо данный текст, такой как полные произведения Уильяма Шекспира.

– Из Википедии

Если мы дадим достаточно времени, Bogosort Worth почти наверняка сортирует массив.

Итак, Богосорт также называется Монкесоррт Отказ

Еще один вариант Бозосорт , который только поменяют два элемента, пока мы не получим отсортированный результат. Сложность выполнения Bozosort также является o (n!).

Сортировка сна

Можем ли мы отсортировать массив без какого-либо сравнения?

Да, это возможно!

Сорт сорта изначально размещен анонимным пользователем, размещенным на 4Chan:

Для его реализации в Python мы выделяем один поток для каждого элемента массива, и каждая нить ждет v секунды для начала, где v – значение элемента:

from time import sleep
from threading import Timer

def sleep_sort(values):
    sleepsort.result = []
    def add1(x):
        sleepsort.result.append(x)
    mx = values[0]
    for v in values:
        if mx < v: mx = v
        Timer(v, add1, [v]).start()
    sleep(mx+1)
    return sleepsort.result

x = [3,2,4,7,3,6,9,1]
print sleep_sort(x)

#[1, 2, 3, 3, 4, 6, 7, 9]

Сложность времени o (макс (массив)), очень много времени на производительность!

Медленный сортировка

Медленная сортировка это насмешливая шутка о разделении и победите. Это рекурсивный алгоритм и, похоже, похоже на Quicksort.

Напротив, это очень медленно.

def slowsort(A, i, j):
    if i >= j:
        return
    m = (i+j) / 2
    slowsort(A, i, m)
    slowsort(A, m+1, j)
    if A[j] < A[m]:
        A[j], A[m] = A[m], A[j]
    slowsort(A, i, j-1)

x = [3,2,4,7,3,6,9,1]
slowsort(x, 0, len(x)-1)

Не могли бы вы выяснить время сложности этого алгоритма? Честно говоря, я не могу:).

Согласно Википедии, даже лучшее дело хуже, чем пузырь.

Это видео является визуализацией того, как она работает:

Вывод

Хотя эти алгоритмы сортировки на самом деле не полезны, они интересны.

Я надеюсь, тебе нравится это и улыбнуться. Будь здоров.

Пост 3 самые медленные сортировочные алгоритмы появился первым на Кошка кодера Отказ

Оригинал: “https://dev.to/snj/3-most-slow-sorting-algorithms-haf”