2017-02-22 46 views
0

Вчера этот вопрос пришел мне на ум. Хотя я не читал все алгоритмы сортировки, такие как Quicksort, Merge Sort, Heapsort Вставка Сортировка, Выбор Сортировка и Bubble Сортировка, и я не прочитал введение в алгоритмы CLRS, но все же мне интересно узнать, почему существует необходимо изучить все такие алгоритмы, когда предопределенная функция сортировки уже доступна для нас на многих языках.Зачем нам нужно изучать различные алгоритмы сортировки, когда функция сортировки STL уже доступна нам на C++?

+6

Потому что инженерное дело - компромиссы. 'std :: sort' - не лучший инструмент сортировки для каждой ситуации. – chris

+2

Потому что знание - это сила. –

+3

В этом отношении, зачем учиться программировать вообще, когда там так много программного обеспечения уже сделано? – MrEricSir

ответ

3

Поскольку

  1. Просто сортировочного только не может всегда быть обязательным требованием. Требование может быть другим. Вам может потребоваться изменить/интегрировать алгоритм сортировки, чтобы развить совершенно другую вещь.

  2. Предопределенные методы сортировки могут быть неэффективными во всех случаях.

  3. Его всегда не о сортированном результате, а о приближении сортировки, чтобы улучшить сложность времени и пространства. Эффективность - это ключ.

  4. Нет особого алгоритма, который гарантированно будет работать лучше всего во всех случаях. Плюсы и минусы могут отличаться для разных алгоритмов.

  5. Необходимо понять, какой алгоритм следует применять при каких сценариях.

  6. Сортировка не всегда выполняется с помощью цифр. Он может применяться на других различных сложных типах/структурах. (Возможно, не существует предопределенных методов для сложных случаев)

  7. Всегда есть возможность для лучшего подхода.

+0

Чтобы быть справедливым, 'std :: sort' может взять компаратор для подключения сложных порядков сортировки, если тип не имеет' operator <'. – chris

+1

На самом деле, самая важная инженерная проблема в реальном мире - это то, где хранятся ваши данные, и это полностью игнорируется в базовой процедуре сортировки Comp.Sci. В частности, местность ссылок является критическим фактором при сортировке. – MSalters