Я сравниваю сортировку вставки с быстрой сортировкой. Я выяснил, почему qsort медленнее на почти отсортированном массиве, но я не могу понять, почему сортировка сортировки намного быстрее, и, конечно, ей все же приходится сравнивать почти столько же элементов в массиве?Почему сортировка вставки быстрее, чем быстрая сортировка по отсортированному массиву
ответ
Это зависит от нескольких факторов. Сортировка вставки будет более эффективной, чем быстрая сортировка по небольшим наборам данных. Это также зависит от реализации вашего резервного списка (LinkedList или ArrayList). Наконец, это также зависит от того, есть ли какой-либо порядок для входных данных. Например, если ваши входные данные уже отсортированы в обратном порядке, и вы используете LinkedList, сортировка вставки будет быстро разгоняться.
Quicksort имеет наихудший временной масштаб (O (n^2)) на уже отсортированных массивах (см. quicksort entry on Wikipedia).
В зависимости от выбора элемента поворота это может быть несколько смягчено, но в то же время наилучшим вариантом для сортировки вставки является именно предварительно отсортированный случай (у него есть O (n) временная сложность для таких входов), поэтому он будет бить quicksort для этого конкретного варианта использования.
Причина, по которой сортировка вставки быстрее на отсортированных или почти отсортированных массивах, заключается в том, что когда она вставляет элементы в отсортированную часть массива, ей едва ли нужно перемещать какие-либо элементы вообще. Например, если отсортированная часть массива равна 1 2
, а следующий элемент - 3
, он должен сделать только одно сравнение - 2 < 3
- чтобы определить, что ему не нужно перемещать 3
. В результате сортировка вставки по уже отсортированному массиву линейно-временна, так как для каждого элемента требуется только одно сравнение.
Сортированные входы - лучший вариант для сортировки вставки (O (n)) и наихудшего случая для быстрого сортировки (O (n^2)).
Все это связано со сложностью, которая определяется числом сравнения ключей, которое является основной операцией в обоих алгоритмах.
Итак, когда вы видите алгоритм, вы обнаруживаете, что при сортировке вставки у вас есть только сравнение n, так как при вставке элемента мы сравниваем только элемент слева и его результат. С другой стороны, в случае быстрой сортировки u вам следует продолжать сравнивать свой элемент поворота со всем вашим левым элементом, а ваш тип уменьшения уменьшится на постоянный один фактор, что приведет к сравнению n^2.
- 1. Почему сортировка сортировки лучше, чем вставка И быстрая сортировка
- 2. Java - Почему мой Bubble сортируется быстрее, чем мой сортировка вставки?
- 3. Быстрая сортировка по очереди?
- 4. Почему сортировка proc происходит быстрее, чем выбор вставки
- 5. Почему мой выбор сортируется быстрее, чем сортировка вставки?
- 6. Почему быстрая сортировка нестабильна
- 7. Быстрая сортировка по возрастанию
- 8. Почему агрегат + сортировка быстрее, чем поиск + сортировка в монго?
- 9. Вставка и быстрая сортировка по массиву Список объектов
- 10. Сортировка по массиву
- 11. Сортировка по массиву указателей
- 12. Оптимизированная сортировка слияния быстрее, чем quicksort
- 13. Быстрая сортировка времени выполнения:
- 14. вставки Сортировка по списку
- 15. Быстрая сортировка?
- 16. быстрая сортировка и сортировка слияния
- 17. Быстрая сортировка по произвольным типам
- 18. быстрая сортировка требований итератора
- 19. Java Быстрая сортировка
- 20. Выбор Сортировка против вставки Сортировка
- 21. Сортировка массива по другому массиву
- 22. Сортировка массивов по другому массиву
- 23. Сгруппированная сортировка по массиву JS
- 24. Сортировка по массиву идентификаторов RUBY
- 25. Сортировка массива Javascript по массиву
- 26. Быстрая сортировка в C
- 27. Рандомизированная быстрая сортировка
- 28. Быстрая сортировка ошибки рекурсии
- 29. Сорт Gnome быстрее, чем быстрый сортировка?
- 30. Javascript Shell Сортировка выполняется быстрее, чем Merge Сортировка
Предоставьте больше информации о вашем сортировке вставки. Есть ли у него проверка, чтобы остановить повторение после сортировки массива? –