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

Алгоритм Богосора

Привет, сегодня я собираюсь поговорить о смешных алгоритмах сортировки, которые называются Bogo Corth … Теги с алгоритмами, компьютерами, CodeNewie, Python.

Структура данных и алгоритмы (31 часть серии)

Привет, сегодня я собираюсь поговорить о нелепых алгоритмах сортировки, которые называются Богоал Сортировать

Определение Богосора

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

Сложность времени и космического пространства

Сложность времени:

  • Лучший случай: O (n)
  • Средний случай: O (n!)
  • Худший случай: бесконечный ( потому что нет никакой гарантии, что случайное перетасовка когда-либо будет создавать отсортированный массив )

Космическая сложность Бого сортировка это о (1)

Реализация Bogo Sort с использованием Python

Чтобы получить случайное целое число, чтобы перетасовать массив, нам нужно импортировать Рэннт из случайного модуля

from random import randint

Функция Shuffle

def shuffle(arr: list):
    for i in range(len(arr)):
        randomInt = randint(0, len(arr) - 1)
        arr[randomInt], arr[i] = arr[i], arr[randomInt]

Испортированная функция

Мы должны реализовать функцию, которая проверяет, будет ли массив, если функция возвращается True, это означает, что массив отсортирован, и нам нужно сломать петлю, остальное ( вернул false ) Мы повторим это до Массив будет отсортирован.

def isSorted(arr: list) -> bool:
    for i in range(len(arr) - 1):
        if arr[i] > arr[i + 1]:
            return False
    return True

Бого сортировка

Эта функция случайно передает массив, пока не будет отсортировано.

def BogoSort(arr: list) -> list:
    # while the array is not sorted
    while not isSorted(arr):
        shuffle(arr)
    # if the array is sorted
    return arr

Окончательный код

from random import randint

def isSorted(arr: list) -> bool:
    for i in range(len(arr) - 1):
        if arr[i] > arr[i + 1]:
            return False
    return True

def shuffle(arr: list)  :
    for i in range(len(arr)):
        randomInt = randint(0, len(arr) - 1)
        arr[randomInt], arr[i] = arr[i], arr[randomInt]

def BogoSort(arr: list) -> list:
    while not isSorted(arr):
        shuffle(arr)
    return arr

Хорошего дня!

Ссылки и полезные ресурсы

# Day_21.

Структура данных и алгоритмы (31 часть серии)

Оригинал: “https://dev.to/ayabouchiha/bogo-sort-algorithm-4l0m”