Структура данных и алгоритмы (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”