Зачем нужна сортировка в программировании

Зачем нужна сортировка в программировании

И почему это любят спрашивать на собеседовании.

Приходишь такой на собеседование, а тебе говорят: «Расскажи про алгоритмы сортировок?» А зачем? А нельзя просто отсортировать и всё? 

Разбираемся. 

Что такое сортировка

Сортировка данных — это когда мы их упорядочиваем по какому-то признаку. 

Например, в школе есть классный журнал, в котором все ученики отсортированы по фамилии. Или товары в интернет-магазине могут выводиться сначала дешёвые, потом дорогие. Или бывает сортировка товаров по популярности: используют внутреннюю переменную «популярность товара» и смотрят на её значение.

Почему нельзя просто отсортировать

Если у вас небольшой и понятный массив, то ничто не мешает взять встроенную функцию языка программирования типа sort() в JavaScript. Она пошуршит каким-то своим алгоритмом и вернёт отсортированный массив. 

Сложности с сортировкой начинаются, когда:

❌ массивы данных большие — на тысячи, десятки и сотни тысяч элементов;

❌ может быть затруднён доступ к данным (например, они идут потоком);

❌ возможностей железа не хватает и нужны более экономные алгоритмы, чем те, которые встроены в язык программирования.

Тогда нужно выбирать специализированные алгоритмы сортировки, а то и оптимизировать их под свои задачи. 

Какие бывают сортировки

Существуют десятки алгоритмов сортировки, каждый из которых хорош в чём-то своём. На одних легко объяснять принципы сортировки, другие хороши при работе с большими массивами, третьи оптимизированы по скорости, четвёртые — по числу процессорных циклов, компактности кода и т. д. 

Самые популярные, которые вы встретите: 

  • Пузырьковая сортировка.
  • Шейкерная.
  • Расчёской.
  • Быстрая сортировка. 
  • Пирамидальная.
  • Сортировка слиянием.

В ближайших статьях покажем примеры. 

Почему про это любят спрашивать на собеседованиях

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

  1. Работодатель хочет посмотреть, какой алгоритм вы выберете, чтобы оценить ваш навык решения конкретных задач. 
  2. Работодатель хочет оценить ваш стиль написания кода: как называете переменные, как оформляете, используете ли комментарии.
  3. Работодатель просто выпендривается и спрашивает это, потому что так написано в модных статьях из серии «Как нанять программиста в стартап».

В целом ничто не мешает натренироваться в вопросах сортировки и показать через это свою эрудированность. 

Что дальше

Впереди много разных видов сортировок — как работают, чем отличаются, где применяются. А главное — мы наглядно покажем, что делают популярные сортировки и почему их назвали именно так.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Алгоритмы — основа разработки
Изучите алгоритмы, чтобы легко проходить ИТ-собеседования и делать более совершенный софт. Старт — бесплатно. Дальше — помощь с трудоустройством.
Новый уровень тут
Алгоритмы — основа разработки Алгоритмы — основа разработки Алгоритмы — основа разработки Алгоритмы — основа разработки
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Flipper Zero: как устроен хакерский тамагочи
Flipper Zero: как устроен хакерский тамагочи

И сколько на нём можно заработать.

easy
Вам мало языка C? Попробуйте C++
Вам мало языка C? Попробуйте C++

Шустрый, мощный, весь обвешан классами.

medium
Зарплата 113 тысяч за то, чтобы ломать программы
Зарплата 113 тысяч за то, чтобы ломать программы

Работа тестировщика как она есть.

easy
Что такое Apache и как он работает
Что такое Apache и как он работает

Простой, но очень полезный веб-сервер

medium
Функции. Зачем они нужны и как их писать, чтобы вас уважали программисты
Функции. Зачем они нужны и как их писать, чтобы вас уважали программисты

Сложная важная статья для тех, кто хочет стать крутым программистом.

medium
Делаем неубиваемый сайт: статика и динамика
Делаем неубиваемый сайт: статика и динамика

Немного об устройстве сайтов.

easy
С чего начать в IT

Даже если вы абсолютный гуманитарий — выход есть.

easy
Зачем устанавливать Ubuntu
Зачем устанавливать Ubuntu

3 причины попробовать.

easy
Самые интересные и необычные винтажные компьютеры
Самые интересные и необычные винтажные компьютеры

От перфокарт до транзисторов

easy
Что такое FTP и зачем оно нужно

Это очень надёжно, но очень небезопасно.

easy
Как сложить два числа с помощью транзисторов

Продолжение легендарной саги.

hard
Асимметричное шифрование
Асимметричное шифрование

Сложное, но очень полезное.

medium
Как устроен Практикум

И зачем там столько тренажёров.

easy
easy