Наилучший сценарий сортировки вставки должен быть O (n), однако, если у вас есть два элемента в массиве, которые уже отсортированы, например 10 и 11, не только он делает только одно сравнение, а не 2 ?Сколько сравнений делает сортировка вставки в уже упорядоченном массиве из 2 элементов?
ответ
Временная сложность О (п) не означает, что число шагов в точности п, то это означает, что число шагов доминирует линейной функции. В основном, для сортировки в два раза больше элементов должно занимать не более двух раз больше времени для больших чисел.
Самый лучший сценарий для сортировки вставки - это когда вы можете вставить новый элемент после всего лишь одного сравнения. Это может произойти только в 2 случаях:
Вы вставляете элементы в с обратной сортировкой списка и сравнить новый элемент с первым элементом целевого списка.
Вы вставляете элементы из отсортированного списка и сравниваете новый элемент с последним из списка целей.
В этих двух случаях каждый новый элемент вставлен после всего лишь одного сравнения, в том числе в случае, о котором вы упоминаете.
Временная сложность была бы действительно O (n) для этих особых случаев. Вам не нужен такой благоприятный случай для этой сложности, временная сложность будет O (n), если существует постоянная верхняя граница для количества сравнений, не зависящих от длины списка.
Обратите внимание, что это обычная оптимизация для оптимизации и сортировки отсортированных списков. Если оптимизация, упомянутая во втором абзаце выше, не реализована, сортировка уже отсортированного списка будет наихудшим сценарием, с n
сравнениями для вставки элемента n+1
.
В общем случае, сортировка вставки по спискам имеет временную сложность O (N 2 ), но осторожно, реализация может произвести оптимальное решение для уже отсортированных списков.
Обратите внимание, что это верно для списков, где вставка в любой позиции имеет постоянную стоимость, сортировка вставки на массивах не имеет этого свойства. Он может быть оптимизирован для обработки этих особых случаев, но не одновременно.
Вставка сортировки N - 1
сравнение, если вход уже отсортирован.
Это потому, что для каждого элемента он сравнивает его с предыдущим элементом и что-то делает, если порядок не прав (не важно, что он делает сейчас, потому что порядок всегда прав). Таким образом, вы сделаете это N - 1
раз.
Похоже, вы должны понимать big O notation. Потому что O(n)
не означает n
операций, это даже не означает близко к n операциям (n/10^9
- это O (n), и это не очень близко к n
). Все это означает, что функция приблизительно линейна (думайте об этом как о пределе, где n-> inf).
- 1. Сортировка элементов с наименьшим количеством сравнений
- 2. Сколько будет проведено сравнение в массиве из 16 элементов во время сортировки вставки?
- 3. Подсчет сравнений с использованием вставки Сортировка
- 4. Выбрать Сортировка сравнений массива
- 5. Сортировка элементов в массиве
- 6. Индивидуальная сортировка элементов в массиве
- 7. Получите 2 из 2 элементов в массиве
- 8. Сортировка/подсчет нелинейных сравнений
- 9. Merge Сортировка счетчиков сравнений
- 10. Дублирование элементов уже в массиве
- 11. C++ как печатать, сколько элементов повторяется в 2 массиве?
- 12. Сколько элементов в динамически распределенном массиве классов
- 13. Сколько элементов заполнено в массиве C
- 14. Найти, сколько элементов находится в 2D-массиве
- 15. Количество сравнений для кучи Сортировка
- 16. Точное количество сравнений в Вставка Сортировка
- 17. Сортировка массива с минимальным количеством сравнений
- 18. Сортировка данных по набору сравнений
- 19. Сортировка элементов в массиве Struct в C
- 20. Python 3: Вставка Сортировка счетчиков сравнений
- 21. Сколько итераций делает сборка cmp в среднем?
- 22. Сортировка наименьших элементов n/logn в массиве
- 23. Алгоритм сортировки, сортировка вставки
- 24. Поиск максимального и минимального элементов с использованием сравнений 3n/2?
- 25. Сортировка небольших чисел элементов
- 26. Сортировка значений словаря из ключей в упорядоченном списке
- 27. Количество сравнений в прямом выборе Сортировка
- 28. Сортировка объектов в массиве 2-го уровня
- 29. целочисленная сортировка в массиве 2-й строки
- 30. Псевдокод для алгоритма подсчета сравнений
'O (n)' не означает 'n'.Это означает линейное увеличение. –