Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Сортировка
sorting

Сортировка

Пузырьковая, выбором, вставкой, слиянием, быстрая сортировка, куча

Сортировка

#Основные алгоритмы сортировки

#Пузырьковая сортировка (Bubble Sort)

  • Принцип: многократно проходит по массиву, меняя местами соседние элементы если они в неверном порядке
  • Сложность: O(n²) в среднем и худшем случае
  • Особенности: неэффективна на практике, используется только для обучения
  • В Python: не используется, sorted() использует Timsort

#Сортировка слиянием (Merge Sort)

  • Принцип: делит массив пополам до единичных элементов, затем сливает отсортированные части
  • Сложность: O(n log n) во всех случаях
  • Особенности: стабильная (сохраняет порядок равных элементов), требует O(n) дополнительной памяти
  • В Python: sorted() и list.sort() используют Timsort (гибрид merge sort + insertion sort)

#Быстрая сортировка (Quicksort)

  • Принцип: выбирает опорный элемент (pivot) и разделяет массив на две части
  • Сложность: O(n log n) в среднем, O(n²) в худшем случае
  • Особенности: на практике часто быстрее merge sort из-за cache locality
  • Улучшения: случайный pivot (randomized quicksort), median-of-three, 3-way partition для дубликатов

#Выбор алгоритма сортировки

При выборе алгоритма сортировки учитывайте:

  1. Размер данных

    • Малые массивы (< 50 элементов): insertion sort может быть эффективнее
    • Большие массивы: merge sort или quicksort
  2. Требования к стабильности

    • Нужна стабильность (сохранение порядка равных элементов): merge sort
    • Стабильность не важна: quicksort
  3. Дополнительная память

    • Ограничена память: in-place алгоритмы (quicksort, heap sort)
    • Дополнительная память доступна: merge sort
  4. Характер данных

    • Уже частично отсортированные: insertion sort или Timsort
    • Много дубликатов: 3-way quicksort
    • Худший случай критичен: merge sort (гарантированная O(n log n))

#Практические рекомендации

  • В большинстве случаев используйте встроенные функции сортировки (sorted(), list.sort())
  • Для специфических задач реализуйте подходящий алгоритм
  • Учитывайте особенности языка программирования (например, в Python Timsort оптимизирован для реальных данных)
  • Тестируйте производительность на ваших данных, а не полагайтесь только на теоретическую сложность

Далее: Поиск