D
DziS Science | Data Science
@dzis_science2.2K подп.
696просмотров
31.9%от подписчиков
13 марта 2026 г.
Score: 766
Предлагаю, что б немного отвлечься поговорить про сортировки. Представим, что вас спросили на собеседовании "Какие сортировки вы знаете?". Очевидно, это время блистать знаниями, а главное остроумием. В качестве вредного совета предлагаю следующие варианты: 🔸Сортировка Сталина 📄Суть: Проходим по списку. Если текущий элемент меньше предыдущего, мы его удаляем. Список становится отсортированным. Жестоко, но очень быстро O(n). def stalin_sort(data): if not data: return [] sorted_list = [data[0]] for x in data[1:]: if x >= sorted_list[-1]: sorted_list.append(x) else: print(f"Элемент {x} не прошел проверку лояльности и был удален.") return sorted_list arr = [1, 5, 2, 8, 3, 10] print(f"Результат: {stalin_sort(arr)}") # Вывод: [1, 5, 8, 10] 🔸Сортировка сном 📄Суть: Для каждого числа в массиве мы создаем отдельный поток, который «спит» количество секунд, равное этому числу. Как только поток просыпается, он добавляет свое число в итоговый список. import asyncio async def sleep_sort(data): result = [] async def add_with_delay(n): await asyncio.sleep(n 0.1) # Множитель для скорости result.append(n) await asyncio.gather((add_with_delay(x) for x in data)) return result arr = [3, 1, 4, 2] # Через 0.4 секунды мы получим [1, 2, 3, 4] print(asyncio.run(sleep_sort(arr))) 💡Проблема: Если у вас есть число 1 000 000, удачи дождаться окончания сортировки. А если числа слишком близки (например, 0.001 и 0.002), погрешность системы может поменять их местами. 🔸Сортировка случаем (Bogo Sort) 📄Суть: Мы просто перемешиваем список случайным образом и проверяем: «А вдруг повезло и он отсортировался?». Если нет — мешаем снова. import random def is_sorted(data): return all(data[i] <= data[i+1] for i in range(len(data)-1)) def bogo_sort(data): attempts = 0 while not is_sorted(data): random.shuffle(data) attempts += 1 return data, attempts arr = [3, 1, 2] result, count = bogo_sort(arr) print(f"Отсортировано за {count} попыток: {result}") 🔸Сортировка чудом. 📄Суть: Проверяем, что список отсортирован, если нет ждем и проверяем снова. В данном случае чудом может быть что угодно: ошибка в памяти (bit flip) из-за космических лучей, которая случайно поменяет биты в нужном порядке, или вмешательство высших сил. import time def miracle_sort(data): while not is_sorted(data): print("Ждем чуда...") time.sleep(10) # Даем Вселенной шанс return data Знаете ли еще какие-то варианты сортировки? #ds_лайфхаки #fun
696
просмотров
2595
символов
Нет
эмодзи
Нет
медиа

Другие посты @dzis_science

Все посты канала →
Предлагаю, что б немного отвлечься поговорить про сортировки — @dzis_science | PostSniper